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