2009-07-20 64 views
2

我有一个类,并在标题中,我定义的:如何访问BOOL类型属性?

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

在我有blackBackground的@synthesize实现。

然后,我实例化这个对象,并做到:

[myViewController setBlackBackground:YES]; 

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

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

但是,它似乎没有响应或返回任何内容,要么值没有设置或我不能调用/检查它。任何想法有什么不对?

回答

16

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

无法声明标量属性具有任何形式的保留,分配,复制语义的问题,将导致编译错误。你应该改变:

@property(nonatomic, assign) BOOL blackBackground; 

@property(nonatomic) BOOL blackBackground; 
+0

其实这是我的代码一个愚蠢的错字!谢谢!奇怪的是,我得到它与@property(nonatomic,分配)。当我不提供分配或保留(只是没有)时,有什么区别?创建的访问器的外观如何? – Thanks 2009-07-20 12:28:42

1

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

+0

意义,如果(myViewController.blackBackground){... – jcb 2009-07-20 11:38:57

1

我同意@Louis Gerbarg,相信你有一些错字,或者刚刚建成较老版本的代码,但我不同意他关于他的理由为了您的错误: 他写道:

The issue that you cannot declare a scalar property to have a any sort of retain,assign,copy semantic, it will result in a compile error. You should change:

@property(nonatomic, assign) BOOL blackBackground;

to

@property(nonatomic) BOOL blackBackground;

而且根据附加链接和苹果的文档:

@property (nonatomic, assign) BOOL blackBackground; 

和:

@property (nonatomic) BOOL blackBackground; 

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

(右?)

previous similar stackOverflow question and answer