无法读取readonly属性,编译器抱怨

时间:2010-10-06 18:49:46

标签: objective-c properties readonly

我是Objective C的新手,但拥有丰富的C ++经验。

我有一个名为bOn的成员变量,我已将其声明为readonly属性。 然后我合成它。

但是,编译器不会让我读它,说“实例变量'bOn'被声明为受保护的”。如果我没有合成,我会理解这个错误。

以下是我的摘要:

@interface Button : NSObject

{

    . . .
    BOOL bOn;
}

@property (nonatomic, readonly) BOOL bOn;

我在哪里使用它:

 -(void) updateForButtonLeft:(Button *)butLeft Right:(Button *)butRight

{

    BOOL bLeft = butLeft->bOn;
    . . .

那我还有什么别的忘记呢?

谢谢,

戴夫。

1 个答案:

答案 0 :(得分:5)

butLeft->bOn;是直接实例变量访问,在极少数情况下,这是一个非常糟糕的主意。

您正在寻找的是:

BOOL bLeft = butLeft.b0n;

或者

BOOL bLeft = [butLeft b0n];