2010-10-06 2 views
0

Я новичок в Objective C, но имею обширный опыт работы на C++.не может прочитать свойство readonly, компилятор жалуется

У меня есть переменная-член, называемая bOn, которую я объявила как свойство readonly. Затем я синтезирую его.

Однако компилятор не позволит мне прочитать его, сказав: «Переменная экземпляра« bOn »объявлена ​​защищенной». Я бы понял эту ошибку, если бы не синтезировал.

Вот мои сниппеты:

@interface Button : NSObject 

{ 

    . . . 
    BOOL bOn; 
} 

@property (nonatomic, readonly) BOOL bOn; 

И где я использую его:

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

{ 

    BOOL bLeft = butLeft->bOn; 
    . . . 

Так что же я забывания делать?

Thanks,

Dave.

+0

Где updateForButtonLeft: Справа: называется? Не внутри класса Button, правильно? Не работает ли Lleft.bOn? – Altealice

ответ

5

butLeft->bOn; является прямым доступом к переменной экземпляра и при всех очень редких обстоятельствах, это действительно плохая идея.

Что вы ищете это:

BOOL bLeft = butLeft.b0n; 

Или

BOOL bLeft = [butLeft b0n]; 
+0

Отлично, привет! Я думаю, что C++ во мне захватывает. Так что точка-нотация может использоваться, даже если это указатель на объект (как я думаю, он всегда будет в ObjC?) Спасибо – Dave

+0

@Dave в Objective-C, 'myObject.foo' - не более чем синтаксический сахар для '[myObject foo]' или '[myObject setFoo: ...]', в зависимости от того, с какой стороны '=' он включен. –