iOS:Objective-C创建类属性错误:使用未声明的标识符

时间:2017-08-04 19:00:35

标签: ios objective-c nsstring

我正在尝试使用此example之后的类属性。但是我收到以下错误:“使用未清除的标识符'_myProperty'”。

这是我的实施:

@interface myClass()

@property (class,strong,nonatomic) NSString *myProperty;

@end


+ (NSString*)myProperty
{
    if (!_myProperty) {

    }
    return [NSString new];
}

enter image description here

为什么我收到此错误?或者你们中的任何一个人都知道解决这个问题?

我真的很感谢你的帮助

3 个答案:

答案 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属性不是类的成员。因此它将立即创建,所有实例都将使用此实例。所以没有什么可以合成的。