如何访问BOOL类型属性?

时间:2009-07-20 11:32:25

标签: iphone uikit

我有一个类,在标题中我定义了这个:

@interface MyViewController : UIViewController {
    BOOL blackBackground;
}
@property(nonatomic, assign) BOOL blackBackground;

在实现中,我为blackBackground提供了@synthesize。

然后,我实例化这个对象并执行:

[myViewController setBlackBackground:YES];

现在布尔值的值应为YES(或true;))。但是,我检查:

if ([myViewController blackBackground]) {
  NSLog(@"yep, it's true");
}

然而,它似乎没有响应或返回任何东西,要么值没有设置或我不能调用/检查它。知道那里有什么问题吗?

3 个答案:

答案 0 :(得分:17)

您确定要使用上述代码吗?它有语法错误,不会编译,所以你完全没有看到代码被执行,因为你正在运行代码的旧副本。

您无法声明标量属性具有任何类型的保留,赋值,复制语义的问题,这将导致编译错误。你应该改变:

@property(nonatomic, assign) BOOL blackBackground;

@property(nonatomic) BOOL blackBackground;

答案 1 :(得分:1)

我认为它是isBlackBackground或者你当然可以使用self.blackBackground

答案 2 :(得分:1)

我同意@Louis Gerbarg并且认为你有一些拼写错误,或者只是构建了旧版本的代码,但我不同意他提供错误的原因: 他写道:

  

您无法申报的问题   标量属性有任何种类   保留,分配,复制语义,它会   导致编译错误。你应该   改变:

     

@property(nonatomic,assign)BOOL blackBackground;

     

     

@property(nonatomic)BOOL blackBackground;

根据所附链接和Apple的文档:

@property (nonatomic, assign) BOOL blackBackground;

@property (nonatomic) BOOL blackBackground;

是相同的,因为“assign”是属性的默认行为。

(右?)

previous similar stackOverflow question and answer