作者yeah200077 (爹卡路洽)
看板MacDev
標題[問題] 這種寫法的意義?
時間Tue May 1 12:18:28 2012
常常看別人的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
1F:推 tentenlee:我一開始也不解 之後寫久了會發現那2個東西是不太依樣的 05/01 12:51
2F:→ tentenlee:久了也會去習慣寫底線去分辨它們 只是我底線是放在等號 05/01 12:52
3F:→ tentenlee:後面的 05/01 12:52
4F:→ wasihero:上面那個可以直接 str.xxx=xx 下面的要 self._str.xx=xx 05/02 00:11
5F:推 aecho:簡單說,是命名慣例。加底線是為了區分出這是local var。 05/09 09:38
6F:推 d71941:可以避免ivar跟accessor混用,下面的如果在setter中,本來要 05/11 02:10
7F:→ d71941:打_str=xx,如果打成self._str=xx,就會造成無窮遞迴 05/11 02:12
8F:→ d71941:或者是getter或setter裡有做某些處理,但是不小心用成_str, 05/11 02:17
9F:→ d71941:就會漏掉那些處理直接動到ivar,可能會造成bug 05/11 02:18