直接访问子类中的自动合成实例变量?

时间:2012-09-02 07:12:17

标签: objective-c properties accessor member-variables synthesize

为了提高效率,我想访问与子类中的属性关联的成员变量。如果我有一个声明如下的属性:

@interface Mumbo : NSObject
    @property (nonatomic) GLKVector3 position;
@end

在Mumbo的实现中,我可以将position定位为self.position或直接引用_position(默认的合成成员变量 - 我不使用@synthesize)。在某些情况下,我使用后者来提高效率,以避免复制结构。

但是,在子类中,除非我将接口更改为

,否则我不能引用_position
@interface Mumbo : NSObject {
    GLKVector3 _position;
}
    @property (nonatomic) GLKVector3 position;
@end

这似乎有效。但是,我保证自动合成的成员变量是否与我在大括号中明确声明的那个一致?我找不到关于这个主题的任何权威文件。

1 个答案:

答案 0 :(得分:3)

自动合成变量使用前导下划线作为默认值,因此您就在那里。

但是你声明你的iVar的方式 - 公开,但自动合成的变量是私有的。这就是为什么你可以从课外访问它。