接口类型不能静态分配



我试图把它放在我的视图对象的头文件:

@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;

最新更新