我试着把它放在我的视图对象的头文件中:
@property (nonatomic) UIColor color;
存储应在此视图中绘制线条的颜色。
Xcode在这一行上给我一个错误:
无法静态分配接口类型
这是什么意思,我该怎么办?
编辑:
我确实添加了*,在合成时,它说:
ARC是否禁止使用未指定的所有权或存储属性合成Objective C对象的属性?
答案 0 :(得分:73)
您的变量用于对象类型,因此必须声明为指针:
@property (nonatomic) UIColor * color; // Note the asterisk
在这种情况下,“静态分配”意味着该对象的内存是在编译时分配的。但是,Obj-C中的所有对象都是在运行时分配的,并通过指针访问。
“接口类型”是一种过于技术性的术语,对编译器有意义,在这里并不是非常重要。这意味着UIColor
代表接口,编译器希望您通过该接口与变量color
进行交互。指向的对象的实际类型可能不同(如NSString
之类的class cluster。
答案 1 :(得分:6)
问题是你只能通过指针访问Objective-C对象,如下所示:
UIColor *color;
你不能有一个“裸”的对象,如下:
UIColor color;
所以解决方法是在你的代码中插入星号(你可能打算这样做,这个bug只是一个错字)。
答案 2 :(得分:5)
您需要声明一个UIColor
指针,并根据您使用ARC还是MRR添加retain / strong:
@property (nonatomic, strong) UIColor *color;