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