作者darktt (小朱)
看板MacDev
標題Re: [問題] Property的關係
時間Sun Jun 16 10:11:52 2013
其實在 Xcode 中 property 其實分為三個部分
一個是它的 setter 與 getter 和它所對應的全域變數
假設一個 property 設定如下
@property (nonatomic, retain) UIImage *image;
在 Xcode 4.5 會自動產生所對應的 setter、getter、與 _image 的全域變數
但是在之前的 Xcode 是必須手動建立的
它的全域變數是要在 interface 中宣告
UIImage *_image;
setter 原本應該如下使用
- (void)setImage:(UIImage *)image
{
_image = [image retain];
}
getter 也是一樣
- (UIImage *)image
{
return _image;
}
其中 @synthesize 就是替代在 interface 中宣告的動作
所以通常會是建議 @synthesize image = _image; 的動作
不過這個在 Xcode 4.5 之後就自動產生了
說真的這點不知道是好還是壞阿?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 27.51.143.138
推 tentenlee:一定要做的事情 變自動產生 不是很好嗎... 06/16 11:06
自動產生的缺點是,久了就會忘了原本的功能與原理
※ 編輯: darktt 來自: 110.25.86.91 (06/16 11:18)
→ uranusjr:知道的人還是知道, 自動產生底線 ivar 比以前會讓一知半 06/16 11:38
→ uranusjr:解的人寫出 @synthesize foo 然後 ivar property 混用的 06/16 11:39
→ uranusjr:狀況要好多了(個人觀點) 06/16 11:39
推 yuanruo:我覺得一開始就用ARC的人 很多東西也不知道... 06/16 12:46
推 steny138:我有問題的地方就是在 @synthesize image = _image; 06/17 09:02
→ steny138:不是已經預設image=_image 那怎麼不能用 image=XX 06/17 09:03