2010-10-06 59 views
0

我新的目标C,但有丰富的C++经验。无法读取一个只读属性,编译器抱怨

我有称为BON一个成员变量,这是我声明为只读属性。 然后我综合它。

然而,编译器不会让我读它,说“实例变量‘BON’声明保护”。如果我没有合成,我会理解这个错误。

这里是我的代码片段:

@interface Button : NSObject 

{ 

    . . . 
    BOOL bOn; 
} 

@property (nonatomic, readonly) BOOL bOn; 

在哪里我使用它:

​​

那么还有什么我忘记了怎么办?

谢谢,

戴夫。

+0

凡updateForButtonLeft:右:叫什么名字?不在Button类中,对吗?不,但是,离开工作? – Altealice 2010-10-06 18:58:35

回答

5

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

你要寻找的是:

BOOL bLeft = butLeft.b0n; 

或者

BOOL bLeft = [butLeft b0n]; 
+0

太棒了,欢呼! 我想在我的C++被接管。 所以点符号即使它是一个指向对象使用(因为我认为它总是会在ObjC?) 感谢 – Dave 2010-10-06 22:55:45

+0

@戴夫在Objective-C,'myObject.foo'无非是语法糖多用于'[myObject的富]'或'[myObject的setFoo:...]',这取决于哪个的一侧的'='它的上。 – 2010-10-07 03:00:01