ARC禁止合成具有未指定所有权或存储的属性

时间:2011-12-10 23:04:50

标签: objective-c memory-management properties compiler-errors automatic-ref-counting

我创建了@property UIColor

@property (nonatomic) UIColor *color;

然后我尝试合成它:

@synthesize color = _color;

但收到错误:

  

ARC禁止使用未指定的所有权或存储属性

合成Objective-C对象的属性

这是什么意思?

我要做的就是为UIColor对象创建一个更改颜色的属性。

2 个答案:

答案 0 :(得分:37)

将您的财产声明更改为:

@property (nonatomic,strong) UIColor *color;

以便ARC知道应该保留它。这可能在ARC之前没有strong进行编译,但是由于默认值为assign并且颜色会被释放,除非它被保留在其他位置,否则它将是危险的。

我强烈推荐关于ARC的WWDC2011视频。

答案 1 :(得分:4)

您必须在属性声明中指定strongweak存储空间(nonatomic旁边)。