我正在尝试使用此example之后的类属性。但是我收到以下错误:“使用未清除的标识符'_myProperty'”。
这是我的实施:
@interface myClass()
@property (class,strong,nonatomic) NSString *myProperty;
@end
+ (NSString*)myProperty
{
if (!_myProperty) {
}
return [NSString new];
}
为什么我收到此错误?或者你们中的任何一个人都知道解决这个问题?
我真的很感谢你的帮助
答案 0 :(得分:3)
类别属性不能在Objective-C中合成。你必须提供自己的支持变量和你自己的getter / setter:
static NSString *_myProperty = nil;
+ (NSString *)myProperty {
if (!_myProperty) {
_myProperty = [NSString new];
}
return _myProperty;
}
+ (void)setMyProperty:(NSString *)myProperty {
_myProperty = myProperty;
}
答案 1 :(得分:0)
类属性从不自动合成,必须实现getter和/或setter,并且不会自动为它们创建后备变量。
如果您的属性需要变量,则必须声明一个变量,在实现文件中使用static
全局 - 这实际上是Objective-C中的“类变量”。或者,如果您只需要一个getter,您可以在getter本身声明一个static
变量本地,进一步降低其可见性,并将getter和变量保持在一起作为包。
HTH
答案 2 :(得分:0)
实际上,class属性不是类的成员。因此它将立即创建,所有实例都将使用此实例。所以没有什么可以合成的。