→ reon:所以@synthesize str = _str 其實就等於說用 05/01 15:56
@synthesize str
和
@synthesize str = _str
的差別,
只在於ivar是否要指定為其他名稱 把私有的ivar用底線開頭 比較好區分而已
如果你不指定ivar的名稱 則會自動用accessor的名稱來當做ivar的命名
→ reon:_str 去取代 self.str 這樣囉? 05/01 15:57
→ reon:就不再需要透過dot syntax這樣嗎@@ 05/01 15:58
_str是instance variable (private by default)
dot syntax是property/accessor/message (public)
兩者是截然不同的...
在get的時候你用ivar或是getter通常是沒有差
(只差在getter因為是message 速度會慢一點點)
但是set的時候 setter會根據你property的設定來決定是否retain或copy(而且是message)
但是用ivar做設定,就要自己手動管理記憶體
不過我不是很確定在ARC開啟的情況下 直接用ivar設定是否會幫你retain?
(理論上應該要是會)
※ 編輯: leondemon 來自: 119.77.246.75 (05/01 16:28)
→ leondemon:property在許多Obc-C的書和官方文件都講的很清楚 05/01 16:31
→ reon:這樣比較清楚了 =_str 目的原來只是別名.. 05/02 23:44
→ reon:@property和synthesize 基本上我是很明白 只是一直沒去了解 05/02 23:46
→ reon:=_str 這個意義為何...感謝分享:D 05/02 23:46
→ reon:不過倒是感覺這功能似乎有點雞助@@"... 05/03 00:07
→ Killercat:你可以想成是在.m裡面的alias 05/04 00:04
→ Killercat:在.h裡面 式open的公開的 所以要寫得很清楚(也許很長) 05/04 00:04
→ Killercat:但是.m裡面的alias你愛怎麼取就怎麼取(至少我是這樣用) 05/04 00:05