Заявленные свойства требуют соответствующей переменной экземпляра?

Свойства в Objective C 2.0 требуют, чтобы соответствующая переменная экземпляра была объявлена? Например, я привык делать что-то вроде этого:

MyObject.h

@interface MyObject : NSObject {
NSString *name;
}
@property (nonatomic, retain) NSString *name;
@end

MyObject.m

@implementation
@synthesize name;
@end

Однако, что, если я сделал это вместо этого:

MyObject.h

@interface MyObject : NSObject {
}
@property (nonatomic, retain) NSString *name;
@end

Это все еще допустимо? И это всегда отличается от моего предыдущего примера?

102
задан Josh Caswell 6 September 2014 в 18:49
поделиться

1 ответ

Если вы используете Modern Objective-C Runtime (iOS 3.x или выше, или 64-битный Snow Leopard или выше), то вам не не нужно определять ivars для ваших свойств в такие случаи.

Когда вы @synthesize свойство, ivar будет фактически синтезирован также для вас. Это позволяет избежать сценария «хрупкого ивара». Вы можете прочитать об этом подробнее на Какао с любовью

94
ответ дан 24 November 2019 в 04:32
поделиться
Другие вопросы по тегам:

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