我有以下类和子类:
@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
然后我在某处运行这段代码:
NSLow *low = [[NSLow alloc] init];
assert(low.array);
因此,显然,如果NSLow
我在子类中合成了数组属性,那么来自超类的 getter 不会被调用,并且断言失败。
如果我不合成,则调用超类 getter,并且断言通过。
- 为什么会这样?
- 我如何在不每次
NSLow
调用的情况下访问子类中的数组实例变量?self.array