Должен ли я сделать свои свойства ivars в iOS?
Просто когда ты думаешь, что понимаешь что-то, ты не понимаешь!:)
Я понимаю, что если я сделаю переменную свойством, я могу получить к ней доступ в любом месте класса и даже установить его вне этого класса.
Я подумал, что если мне это не понадобится, я могу просто сделать его иваром. Итак, у меня есть viewcontroller с 5 UILabels. Поэтому в его представлении DidLoad я говорю:
pharmacyName.text = self.receivedLocation.name;
pharmacyTel1.text = @"556-7843";
pharmacyTel2.text = @"991-2345";
pharmacyTel3.text = @"800-0001";
Когда я объявил их так в файле.h:
@interface DetailViewController : UIViewController{
IBOutlet UILabel *pharmacyName;
IBOutlet UILabel *pharmacyTel1;
IBOutlet UILabel *pharmacyTel2;
IBOutlet UILabel *pharmacyTel3;
}
@property (nonatomic,strong) MyLocation *receivedLocation;
@end
2 ответа
Нет. Не обязательно создавать ivar как собственность. Если вы не хотите получать доступ к нему вне класса, просто используйте его как есть. В ARC вы также можете объявить свой IBOutlet, как показано ниже:
@interface DetailViewController : UIViewController{
__weak IBOutlet UILabel *pharmacyName;
__weak IBOutlet UILabel *pharmacyTel1;
__weak IBOutlet UILabel *pharmacyTel2;
__weak IBOutlet UILabel *pharmacyTel3;
}
Это будет держать неделю ссылки на торговые точки. Вот деталь __слабого и сильного
Всегда есть много способов приблизиться к задачам и стандартам программирования. Наша группа начала использовать несколько стандартов кодирования. Нам нравится помещать переменные нашего экземпляра, к которым нет доступа извне класса (и операторов протокола), в закрытый интерфейс в файле.m, например так:
@interface DetailViewController() {
NSString *value_;
}
@end
Мы также хотели бы использовать @property
для нашего экземпляра ivars и объявите их в приватном интерфейсе так:
@interface DetailViewController() {
}
@property (nonatomic, strong) IBOutlet UIlabel *pharmacyName;
@end
а затем в вашем коде, вы бы назвали это self.pharmacyName
, Кажется, что он работает очень хорошо с автозаполнением, а также с получением и настройкой. Также, когда у вас есть проблемы с безопасностью потоков, неатомичное, сильное поведение оказывается полезным.