Можно ли установить для свойств значение nil в dealloc при использовании ARC?

Я пытаюсь изучить автоматический подсчет ссылок в iOS 5. Теперь первая часть этого вопроса должна быть простой:

  1. Верно ли, что мне НЕ нужно писать явные операторы свойства выпуска в моем dealloc при использовании ARC? Другими словами, верно ли, что следующее НЕ требует явного dealloc?

     @interface MyClass: NSObject 
     @ property (strong , неатомарно) NSObject * myProperty; 
     @ end 
     
     @ implementation MyClass 
     @ synthesize myProperty; 
     @ end 
     
  2. Мой следующий и более важный вопрос исходит из строки в документе Переход к ARC Release Notes :

    Вы не должны (действительно не можете) освобождать переменные экземпляра, но вам может потребоваться вызвать [self setDelegate: nil] для системных классов и другого кода, который не компилируется с использованием ARC.

    Возникает вопрос: как мне узнать, какие системные классы не скомпилированы с помощью ARC? Когда мне следует создать свой собственный dealloc и явно установить для строго сохраняемых свойств значение nil? Должен ли я предполагать, что для всех классов инфраструктуры NS и UI, используемых в свойствах, требуются явные деаллоки?

Существует огромное количество информации о SO и других методах освобождения поддерживающего ivar свойства при использовании ручного отслеживания ссылок, но относительно мало об этом, когда используя ARC.

123
задан emfurry 3 October 2012 в 14:38
поделиться