Я пытаюсь изучить автоматический подсчет ссылок в iOS 5. Теперь первая часть этого вопроса должна быть простой:
Верно ли, что мне НЕ нужно писать явные операторы свойств выпуска в моем dealloc при использовании ARC? Другими словами, правда ли, что следующее НЕ требует явного освобождения?
@interface MyClass : NSObject @property (strong, nonatomic) NSObject* myProperty; @end @implementation MyClass @synthesize myProperty; @end
Мой следующий и более важный вопрос исходит из строки в документе Transitioning to ARC Release Notes :
Вам не нужно (действительно, не можете) освобождать переменные экземпляра, но вам может потребоваться вызвать [self setDelegate: nil] для системных классов и другого кода, который не компилируется с использованием ARC.
Возникает вопрос: как узнать, какие системные классы не скомпилированы с помощью ARC? Когда мне следует создать свой собственный dealloc и явно установить для строго сохраняемых свойств значение nil? Должен ли я предполагать, что для всех классов инфраструктуры NS и UI, используемых в свойствах, требуются явные деаллоки?
Существует огромное количество информации о SO и в других местах о методах выпуска поддерживающего ivar свойства при использовании ручного отслеживания ссылок, но относительно мало об этом при использовании ARC.
MyController : UIViewController
класс, который создает и владеет UIView, а также устанавливает делегата представления самому себе. Это единственный сохраняющий владелец этой точки зрения. Когда контроллер освобождается, представление также должно быть освобождено. Имеет ли значение, если указатель делегата болтается?