作者steny138 (阿辰)
看板MacDev
標題[問題] Property的關係
時間Sat Jun 15 16:55:28 2013
根據現在的說法
在.h宣告了
@property NSString *value;
等同於
@property NSString *value;
@Synthesis value=_value;
那這樣說的話
在使用該property時候
怎麼只能使用 self.value=@"";
而找不到 value=@""; //不能通過編譯
但是在使用 _value=@""; //也不會報錯
請問到底是怎麼回事???
有一些解釋我看不太懂
沒有點到我想的問題
我以為自動加入synthesis
表示 產生一個 value 指向property產生的變數 _value
卻沒有辦法使用 value=@"";
而必須使用 self.value or [self value]
是因為這個 value 現在是 method 名稱 所以才要這樣寫嗎
更怪的是 若我又寫了
@property NSString *value;
@Synthesis value;
我就可以直接寫
value=@""; //通過編譯
請問到底是怎麼回事 我覺得我被搞混了
反而大家講得我都看不懂了...
現在用的是 xcode 4.5的版本
請指教 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.230.90
→ uranusjr:你搞錯 synthesize 的意思了 06/15 17:10
→ yuanruo:不寫或是@synthesize value = _value 時你用self.value 06/15 18:11
→ yuanruo:他會調用setter方法 根據property裡設置的retain,copy,ass 06/15 18:12
→ yuanruo:去賦值 用_value = @"" 是直接賦值給Value 不通過setter 06/15 18:13
→ yuanruo:當你寫成@synthesize value時則原本的_value或被vlaue取代 06/15 18:14
→ yuanruo:你就只能用self.value(通過setter)或是value= (直接賦值) 06/15 18:15
→ yuanruo:當寫成@sy value getter是返回 value 不寫則是返回_value 06/15 18:20