看板 MacDev 關於我們 聯絡資訊
常常看別人的Code會看到這種寫法出現 h檔: NSString* _str; property(nonatomic,copy) NSString* str; m檔: @synthesize _str = str; [_str release]; 我想問的為什麼要另外宣告str assign給 _str有什麼意義? 我直接寫成 property(nonatomic,copy) NSString* _str; @synthesize _str; 好像也行,不懂為什麼會這樣寫 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.176.185
tentenlee:我一開始也不解 之後寫久了會發現那2個東西是不太依樣的 05/01 12:51
tentenlee:久了也會去習慣寫底線去分辨它們 只是我底線是放在等號 05/01 12:52
tentenlee:後面的 05/01 12:52
wasihero:上面那個可以直接 str.xxx=xx 下面的要 self._str.xx=xx 05/02 00:11
aecho:簡單說,是命名慣例。加底線是為了區分出這是local var。 05/09 09:38
d71941:可以避免ivar跟accessor混用,下面的如果在setter中,本來要 05/11 02:10
d71941:打_str=xx,如果打成self._str=xx,就會造成無窮遞迴 05/11 02:12
d71941:或者是getter或setter裡有做某些處理,但是不小心用成_str, 05/11 02:17
d71941:就會漏掉那些處理直接動到ivar,可能會造成bug 05/11 02:18