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

Wil*_*ham 20 memory-management compiler-errors properties objective-c automatic-ref-counting

我创建了一个@propertyUIColor,

@property (nonatomic) UIColor *color;
Run Code Online (Sandbox Code Playgroud)

然后我试着合成它:

@synthesize color = _color;
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

ARC禁止使用未指定的所有权或存储属性合成Objective-C对象的属性

那是什么意思?

我所要做的就是为一个UIColor改变颜色的对象创建一个属性.

Bri*_*ian 37

将您的财产声明更改为:

@property (nonatomic,strong) UIColor *color;

所以ARC知道应该保留它.这可能是strong在ARC之前编译的,但是它会很危险,因为默认情况是assign,并且颜色会被释放,除非它被保留在别处.

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

  • 这不是必需的,除非该属性是一个块,在这种情况下它必须被明确地称为"copy".所以问题就是其他问题. (8认同)