Свойства ARC и nilling

Если я хочу потенциально повторно выделить /init и повторно использовать свойство моего класса в ARC, как я могу уничтожить предыдущий экземпляр?

Можно ли назвать self.myProperty = nil; а затем позже повторно выделить и запустить одно и то же свойство?

Спасибо, Джон

2 ответа

да

self.myProperty = nil;
 self.myProperty = [PropertyClass new]; // or [[PropertyClass alloc] init]

будет делать то, что вы хотите. Если self - это единственное, что удерживает (удерживает) экземпляр, он также вызывается методом экземпляра dealloc для класса myProperty.


Вы можете сделать свойство нулем всегда, когда ссылка больше не нужна. При распределении объекта нет необходимости хранить нуль.

Причина: когда указатель пытается указать другое местоположение, если нет другой ссылки на старое местоположение, что старый объект будет освобожден.

licensed under cc by-sa 3.0 with attribution.