[問題] 這種寫法的意義?

看板MacDev作者 (爹卡路洽)時間12年前 (2012/05/01 12:18), 編輯推噓3(306)
留言9則, 4人參與, 最新討論串1/2 (看更多)
常常看別人的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

05/01 12:51, , 1F
我一開始也不解 之後寫久了會發現那2個東西是不太依樣的
05/01 12:51, 1F

05/01 12:52, , 2F
久了也會去習慣寫底線去分辨它們 只是我底線是放在等號
05/01 12:52, 2F

05/01 12:52, , 3F
後面的
05/01 12:52, 3F

05/02 00:11, , 4F
上面那個可以直接 str.xxx=xx 下面的要 self._str.xx=xx
05/02 00:11, 4F

05/09 09:38, , 5F
簡單說,是命名慣例。加底線是為了區分出這是local var。
05/09 09:38, 5F

05/11 02:10, , 6F
可以避免ivar跟accessor混用,下面的如果在setter中,本來要
05/11 02:10, 6F

05/11 02:12, , 7F
打_str=xx,如果打成self._str=xx,就會造成無窮遞迴
05/11 02:12, 7F

05/11 02:17, , 8F
或者是getter或setter裡有做某些處理,但是不小心用成_str,
05/11 02:17, 8F

05/11 02:18, , 9F
就會漏掉那些處理直接動到ivar,可能會造成bug
05/11 02:18, 9F
文章代碼(AID): #1FdsGOs3 (MacDev)
文章代碼(AID): #1FdsGOs3 (MacDev)