Сохранить против Назначить для элементов управления внутри NIB / XIB с помощью iPhone SDK - PullRequest
0 голосов
/ 19 февраля 2011

Я использую Interface Builder для создания своего rootViewController, который сохраняется моим делегатом приложения.У меня есть несколько элементов управления в этой XIB, такие как пара UIButtons, UISlider и т. Д., Как IBOutlets, правильно подключенные в Интерфейсном Разработчике.

На стороне реализации кода XIB, я видел некоторых людейиспользуйте:


@interface RootViewController : UIViewController {
    IBOutlet UIButton *button1;
    IBOutlet UIButton *button2;
    ...
}

@property(nonatomic, assign) UIButton *button1;
@property(nonatomic, assign) UIButton *button2;

@end

Почему они используют присвоение вместо сохранения?Я видел, что некоторые люди даже не используют свойство assign.

Бесполезно использовать retain, поскольку XIB rootViewController всегда будет содержать ссылку на них, пока он загружен?Или они просто ленивы и не проходят через шаги, чтобы сохранить, синтезировать и сдать?Мне кажется, что не помешает хранить ссылки, пока необходим элемент управления и viewController не был освобожден, а просто интересует, делают ли XIB что-то по-другому, если в этом нет необходимости.

Я прочитал руководство по управлению памятью, кстати.

Спасибо!

1 Ответ

1 голос
/ 19 февраля 2011

Не повредит сохранить все подпредставления как назначенные, а не сохраненные, пока они остаются ребенком оттуда.

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

Я не могу думать о других причинах, по которым вы должны использовать retain вместо assign.

Я всегда использую retainЯ думаю, что это лучшая практика для торговых точек, и это, кажется, соглашение.

...