Tag: properties

如果一个子类引用一个超级伊娃,合成一个不相关的属性失败

编辑:我只是注意到这个其他堆栈溢出问题要求很多相同的事情: 为什么一个子类@property没有相应的伊娃隐藏超类ivars? 这是一些有趣的行为,我无法在官方或非官方(博客,鸣叫,SO问题等)中findlogging。 我把它解释成它的本质,并在一个新的Xcode项目中进行了testing,但我无法解释它。 MyBaseClass有一个实例variables: @interface MyBaseClass : NSObject { NSObject *fooInstanceVar; } @end MySubclass扩展了MyBaseClass,并声明了一个完全不相关的属性(也就是说,该属性不打算由实例variables支持): #import "MyBaseClass.h" @interface MySubclass : MyBaseClass { } @property (nonatomic, retain) NSObject *barProperty; @end 如果MySubclass的实现不合成属性,但实现访问器方法,一切都很好(没有编译器错误): #import "MySubclass.h" @implementation MySubclass – (NSObject*)barProperty { return [[NSObject alloc] init]; // pls ignore flagrant violation of memory rules. } – (void)setBarProperty:(NSObject *)obj { /* […]