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

Dav*_*ave 0 properties objective-c readonly

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

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

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

这是我的片段:

@interface Button : NSObject

{

    . . .
    BOOL bOn;
}

@property (nonatomic, readonly) BOOL bOn;
Run Code Online (Sandbox Code Playgroud)

我在哪里使用它:

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

{

    BOOL bLeft = butLeft->bOn;
    . . .
Run Code Online (Sandbox Code Playgroud)

那我还有什么别忘了呢?

谢谢,

戴夫.

Dav*_*ong 5

butLeft->bOn; 是直接实例变量访问,在所有但非常罕见的情况下,是一个非常糟糕的主意.

你在寻找的是:

BOOL bLeft = butLeft.b0n;
Run Code Online (Sandbox Code Playgroud)

要么

BOOL bLeft = [butLeft b0n];
Run Code Online (Sandbox Code Playgroud)