2017-08-04 42 views
0

的我試圖使用類屬性下面這個example。但是我收到以下錯誤:「使用未清除的標識符'_myProperty'」。的iOS:Objective-C的創建類屬性錯誤:使用未聲明的標識符

這是我實現:

@interface myClass() 

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

@end 


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

    } 
    return [NSString new]; 
} 

enter image description here

爲什麼我得到這個錯誤?或者你們中的任何人都知道這方面的工作?

我真的很感謝你的幫助

+0

我不熟悉Objective-C的語法,但問題似乎是你的變量myProperty的工作就像一個計算的可變吸氣。換句話說,你沒有聲明任何地方沒有提供任何初始值。對不起,如果我誤解了。 –

回答

3

在Objective-C中不能合成類屬性。你必須提供自己的後盾變量和自己的getter/setter:

static NSString *_myProperty = nil; 

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

    return _myProperty; 
} 

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

類屬性,從不自動合成,getter和/或setter必須執行,沒有後盾變量爲他們自動創建。

如果你的屬性需要您必須聲明一個變量,使用static全球在實現文件 - 這實際上是一個「類變量」在Objective-C。另外,如果你只需要一個getter可以聲明static局部變量吸氣劑本身,進一步降低了其知名度和保持getter和變量一起作爲一個包。

HTH

0

事實上,class屬性不是一個類的成員。所以它會立即創建,所有的實例都會使用這個。所以沒有什麼可以綜合的。