我有一个类,在标题中我定义了这个:
@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");
}
然而,它似乎没有响应或返回任何东西,要么值没有设置或我不能调用/检查它。知道那里有什么问题吗?
答案 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”是属性的默认行为。
(右?)