Wil*_*ham 40 xcode memory-management compiler-errors interface objective-c
我试着把它放在我的视图对象的头文件中:
@property (nonatomic) UIColor color;
Run Code Online (Sandbox Code Playgroud)
存储应在此视图中绘制线条的颜色.
Xcode在这一行上给出了一个错误:
接口类型不能静态分配
这是什么意思,我该怎么办?
编辑:
我确实添加了*,在合成时,它说:
ARC禁止使用未指定的所有权或存储属性合成Objective C对象的属性?
Jos*_*ell 77
您的变量用于对象类型,因此必须声明为指针:
@property (nonatomic) UIColor * color; // Note the asterisk
Run Code Online (Sandbox Code Playgroud)
在这种情况下,"静态分配"意味着该对象的内存是在编译时分配的.但是,Obj-C中的所有对象都是在运行时分配的,并通过指针访问.
"接口类型"是一种对编译器有意义的过度技术术语,在这里并不是非常重要.它表示UIColor
代表编译器期望您与变量交互的接口color
.指向的对象的实际类型可能不同(如类集群一样NSString
).
小智 6
问题是你只能通过指针访问Objective-C对象,如下所示:
UIColor *color;
Run Code Online (Sandbox Code Playgroud)
你不能有一个"裸"的对象,像这样:
UIColor color;
Run Code Online (Sandbox Code Playgroud)
因此,解决方案是在代码中插入星号(您可能打算这样做,而错误只是一个错字).
您需要声明一个UIColor
类似的指针并添加retain/strong,具体取决于您使用的是ARC还是MRR:
@property (nonatomic, strong) UIColor *color;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28052 次 |
最近记录: |