NIB, setValue: для ключа и сохранения (iOS) - PullRequest
1 голос
/ 05 августа 2010

Я знаю какой-то механизм подключения розетки при загрузке NIB, но я не уверен. Поэтому я задаю несколько вопросов, чтобы убедиться в моих знаниях. Я предположил, что все это правда, но трудно найти упоминание об этом в справочной документации. Пожалуйста, указывайте неправильные и правильные вещи.

У меня есть IBOutlet, определенный следующим образом: (Конечно, это не рекомендуется)

@implementation
{
    IBOutlet id var1;
}
@end
  1. Загрузчик NIB (alloc | retain) и автоматический выпуск всех объектов верхнего уровня. Таким образом, он будет освобожден на концах хода runloop без дополнительного сохранения.
  2. Подключение IBOutlets осуществляется с помощью KVC.
  3. KVC в основном использует метод доступа.
  4. KVC вторично использует setValue: forKey. И IBOutlet будет обрабатываться этим методом, потому что нет объявленного свойства или метода доступа.
  5. setValue: forKey сохраняет объект нового значения.
  6. setValue: forKey освобождает старый объект значения.
  7. Таким образом, объект верхнего уровня, подключенный к IBOutlet, будет сохранен один раз. Таким образом, я должен выпустить его в dealloc. Вот почему я должен освобождать объекты, подключенные к IBOutlet, по методу dealloc.
  8. Если объект подключен к другому IBOutlet, такому как IBOutlet, он должен быть освобожден еще раз для освобождения.
...