Присвоение IBOutlet в Objective C

Генератор кода Accessorizer имеет опцию присвоить IBOutlets вместо того, чтобы сохранить их. Например, сравните эти две сгенерированных строки:

@property(nonatomic,retain)IBOutlet UIImageView *backgroundView;
@property(nonatomic,assign)IBOutlet UIImageView *backgroundView;

Почему я хотел бы присвоить IBOutlets при сохранении всех других свойств?

6
задан Casebash 23 January 2010 в 03:16
поделиться

3 ответа

Использование зависит от платформы, как указано в руководстве по управлению памятью :

«Поведение выходов зависит от платформа (см. «Mac OS X Desktop» и «iPhone»), так что фактический Декларация отличается:

  для Mac OS X, вы должны использовать:

  @Property (НАЗНАЧЕНИЕ) Iboutlet UserInterFaceElementClass * AnOutlet;

  Для ОС iPhone вы должны использовать:

  @Property (неатомический, удерживающий) Iboutlet UiuserInterFaceElementClass * Anoutlet; "
 
15
ответ дан 8 December 2019 в 16:02
поделиться

В iPhone OS ваше представление может выгружаться (в условиях нехватки памяти), но если у вас есть состояние, которое вас беспокоит в некоторых ваших представлениях, подключенных к розеткам, вы не хотите его потерять. Итак, вы хотите сохранить их.

Скажем, навигационный контроллер. Корневое представление выгружается из-за предупреждения о нехватке памяти, отправляемого контроллеру, но над ним в стеке находится группа контроллеров. Когда вы возвращаетесь к корневому каталогу, он перезагружает представление и возвращает ваши розетки в то же состояние, в котором они были раньше.

По крайней мере, я думаю, что это техническая причина.

Но в более общем смысле ваш контроллер заботится об этих представлениях, потому что он хочет взаимодействовать с ними. И сам по себе этот факт означает, что вы хотите сохранить их и отпустить, когда вам уже все равно. Это просто хорошая практика.

4
ответ дан 8 December 2019 в 16:02
поделиться

IBOutlet не определен как ничего. Удерживая нажатой клавишу Command, щелкните слово в Xcode, чтобы увидеть его определение.

То есть это просто ловушка, которую разработчик интерфейса знает, как ее показать. Я никогда не видел @property , который содержал бы IBOutlet , но Я предполагаю, что это для ситуаций вроде UIViewController @property view , которое должно быть доступно из IB, но также может быть назначено во время выполнения.

-4
ответ дан 8 December 2019 в 16:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: