很明顯,@synthesize爲對象定義了setter和getter。@合成「_」符號
但目前尚不清楚對我說:
@synthesize managedObjectContext = _managedObjectContext;
是什麼意思?爲什麼不以這種方式實現它:
@synthesize managedObjectContext;
這似乎更容易?
另外,它是否與懶惰的編程有關,這意味着你必須自己編寫setter和getter?
希望有人可以幫助;)
很明顯,@synthesize爲對象定義了setter和getter。@合成「_」符號
但目前尚不清楚對我說:
@synthesize managedObjectContext = _managedObjectContext;
是什麼意思?爲什麼不以這種方式實現它:
@synthesize managedObjectContext;
這似乎更容易?
另外,它是否與懶惰的編程有關,這意味着你必須自己編寫setter和getter?
希望有人可以幫助;)
這只是一個約定人們用它來給財產和伊娃名字不同。該物業將被稱爲managedObjectContext
,iVar將被稱爲_managedObjectContext
。
如果他們都被命名爲相同,那麼將它們混淆可能相當容易,而將它們混合起來可能會產生意想不到的結果,因爲使用iVar名稱將繞過該屬性上的任何setter和getter。
除此之外,它沒有實際功能。
那麼我應該什麼時候以這種方式實施呢?因爲通常我們只是簡單地將它合成爲後者,例如@synthesize certainButton; – JackieLam 2013-05-03 15:37:52
另外,它是否與懶惰的編程有關,這意味着你必須自己編寫setter和getter? – JackieLam 2013-05-03 15:38:43
@JackieLam認爲它更像一種方便而不是規則。它只是將iVar重命名爲使它更難以混淆兩者,它使iVar或屬性的功能完全沒有區別。比較一下ObjectiveC中的縮進,這對於可讀性很方便,很多人都這樣做,但是在代碼的功能上沒有任何區別。 – 2013-05-03 15:39:26
你不需要再合成了,因爲xcode 4.2(?),它會被隱式添加爲'@sythesize foo = _foo;'所以最懶惰的編程就是不合成和使用下劃線。但不檢查文檔不是懶惰的編程 - 這太懶惰了。 – vikingosegundo 2013-05-03 15:54:37