iOS: Objective-C creating class property error: Use of undeclared identifier

iOS: Objective-C creating class property error: Use of undeclared identifier

我正在尝试在 example 之后使用 class 属性。但我收到以下错误:"Use of undecleared identifier '_myProperty'".

这是我的实现:

@interface myClass()

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

@end


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

    }
    return [NSString new];
}

为什么会出现此错误?或者你们中有人知道解决这个问题的方法吗?

非常感谢你的帮助

Class 属性未在 Objective-C 中合成。您必须提供自己的支持变量和您自己的 getter/setter:

static NSString *_myProperty = nil;

+ (NSString *)myProperty {
    if (!_myProperty) {
        _myProperty = [NSString new];
    }

    return _myProperty;
}

+ (void)setMyProperty:(NSString *)myProperty {
    _myProperty = myProperty;
}

Class 属性并且从不自动合成,必须实现 getter and/or setter,并且不会为它们自动创建支持变量。

如果您的 属性 需要一个变量,您必须声明一个变量,在实现文件中使用 static 全局变量 - 这实际上是 Objective-C 中的 "class variable"。或者,如果您只需要一个 getter,您可以声明一个 getter 局部的 static 变量,进一步降低其可见性并将 getter 和变量作为一个包保持在一起。

HTH

事实上,class 属性 不是 class 的成员。所以它将被立即创建并且所有实例都将使用这个。所以没有什么可以合成的。