[問題] Property的關係

看板MacDev作者 (阿辰)時間12年前 (2013/06/15 16:55), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串1/3 (看更多)
根據現在的說法 在.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

06/15 17:10, , 1F
你搞錯 synthesize 的意思了
06/15 17:10, 1F

06/15 18:11, , 2F
不寫或是@synthesize value = _value 時你用self.value
06/15 18:11, 2F

06/15 18:12, , 3F
他會調用setter方法 根據property裡設置的retain,copy,ass
06/15 18:12, 3F

06/15 18:13, , 4F
去賦值 用_value = @"" 是直接賦值給Value 不通過setter
06/15 18:13, 4F

06/15 18:14, , 5F
當你寫成@synthesize value時則原本的_value或被vlaue取代
06/15 18:14, 5F

06/15 18:15, , 6F
你就只能用self.value(通過setter)或是value= (直接賦值)
06/15 18:15, 6F

06/15 18:20, , 7F
當寫成@sy value getter是返回 value 不寫則是返回_value
06/15 18:20, 7F
文章代碼(AID): #1Hl2m2ZR (MacDev)
文章代碼(AID): #1Hl2m2ZR (MacDev)