OC 自定義 get/set 方法注意點

    今天碰到一個基礎問題,須要自定義set方法,原本挺順利的,定義一個屬性xcode

.h文件
@property (nonatomic, strong) NSString *name

.m文件
- (void)setName:(NSString*)name
{
    _name = name;
}

    上面這麼寫你們應該都能理解,即自定義set方法的標準寫法。後來屬性的名稱改了一下,忘記了改set方法,致使設置屬性時走不到自定義方法中,搞了半天,終於找到問題,我想說的不是這個,這個只是原由,要說的是解決問題過程當中碰到的一個問題:同時使用自定義 get/set 方法的注意點。ide

    或許你認爲,這還不簡單,以下:
atom

.h文件
@property (nonatomic, strong) NSString *name

.m文件
- (void)setName:(NSString*)name
{
    _name = name;
}
- (NSString*)name
{
    return _name
}

    但實際上,xcode7.2給出了以下錯誤:code

/Users/zoubon/testproject/testpro/testpro/testProperty.m:21:5: Use of undeclared identifier '_name'; did you mean 'name'?

    找不到標識符_name,奇怪,_name不就是屬性name的別名嗎?get

    確實是,在自定義單獨的一個get或set方法時,上面的寫法沒有問題,但兩個同時存在時,就錯了,緣由暫不深究,就說解決方法吧,一個久遠的關鍵字:@synthesize編譯器

@synthesize first = _first

    好久之前@synthesize就不用了,編譯器自動生成屬性的get/set方法,想不到同時自定義時,派上了用場,先寫到這裏吧,或許還有一些緣由或方法我沒有想到,後面再補充吧編譯

相關文章
相關標籤/搜索