Inherited properties and synthesizing in Objective-C
我有以下类和子类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @interface NSHigh : NSObject @property (nonatomic, strong) NSArray *array; @end @implementation NSHigh -(NSArray*)array { _array = [[NSArray alloc] init]; return _array; } @end @interface NSLow : NSHigh @end @implementation NSLow /* synthesizing makes the assertion FAIL. NO synthesizing makes the assertion PASS */ @synthesize array; @end |
然后我在某个地方运行此代码:
1 2 |
显然,如果在子类
如果不进行合成,则调用超类getter,断言通过。
在
1 2 3 | - (NSArray *)array { return _array; } |
所以,你是永远不会主动阵列和
你不generally"的使用方法,这是
也,你不必执行T A接收一个在
1 2 3 4 5 6 | - (NSArray *)array { if (!_array) { _array = [[NSArray alloc] init]; } return _array; } |
finally,你根本不应该使用
编辑: </P >
如果你想直接访问你的好,在subclass,你可以explicitly declare它的头,这样: </P >
1 2 3 4 5 | @interface NSHigh : NSObject { NSArray *_array; } @property (nonatomic, strong) NSArray *array; @end |
这将允许你访问到的是在你的subclasses太。。。。。。。 </P >