【问题标题】:cannot read a readonly property, compiler complains无法读取只读属性,编译器抱怨
【发布时间】:2010-10-06 18:49:45
【问题描述】:

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

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

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

这是我的 sn-ps:

@interface Button : NSObject

{

    . . .
    BOOL bOn;
}

@property (nonatomic, readonly) BOOL bOn;

我在哪里使用它:

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

{

    BOOL bLeft = butLeft->bOn;
    . . .

那我还忘了做什么?

谢谢,

戴夫。

【问题讨论】:

  • updateForButtonLeft:Right: 调用在哪里?不在 Button 类中,对吧? butLeft.bOn 不起作用吗?

标签: objective-c properties readonly


【解决方案1】:

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

您正在寻找的是:

BOOL bLeft = butLeft.b0n;

或者

BOOL bLeft = [butLeft b0n];

【讨论】:

  • 太好了,干杯!我认为我的 C++ 正在接管。所以即使它是指向对象的指针也可以使用点表示法(因为我认为它总是在 ObjC 中?)谢谢
  • @Dave 在 Objective-C 中,myObject.foo 只不过是 [myObject foo][myObject setFoo:...] 的语法糖,这取决于它在 = 的哪一侧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 2014-02-03
  • 2011-01-08
  • 2019-02-01
  • 2017-12-30
  • 2021-04-23
相关资源
最近更新 更多