// .h
@property (strong, nonatomic) NSString *note;
// .m
@synthesize note = _note;
- (id) initWithNote: (NSString *)note {
self = [ super init ];
if (self) {
_note = note; // _note is just a instance variable.
self.note = note; // 'self.note = note;' is using setter method.
return self;
}
return nil;
}
@property (strong, nonatomic) NSString *note;
влияет на методы настройки и геттера. И по умолчанию переменными являются тип __strong на ARC.Использование @property on ARC
В чем разница между _note = note;
и self.note = note;
? Вместо strong
, retain
на не-ARC сделать разницу в этой ситуации.
На самом деле 'self.note = note' не разбивает приложение - оно заворачивает его в бесконечный цикл вызова вызывающего абонента. –
Вы правы, он сначала становится невосприимчивым к рекурсивным вызовам. Это может также привести к сбою в конце концов после исчерпания пространства памяти стека. Спасибо за исправление, я обновлю ответ. – Macondo2Seattle
@rokjarc, нет, делая это внутри сеттера. Сбой вашего приложения из-за переполнения ** стека ** (соответственно достаточно.) Я делал это случайно несколько раз и могу с уверенностью сказать, что он потерпит крах. Это занимает меньше минуты. –