4

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

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

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

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

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

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

4

1 回答 1

3

自动合成的变量默认使用前导下划线,所以你就在那里。

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

于 2012-09-02T07:17:45.893 回答