看板 MacDev 關於我們 聯絡資訊
根據現在的說法 在.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