在其中一個Standford IOS tutorials中,教師使用延遲實例化來創建計算器引擎類的實例。如何在目標c中做懶惰的實例化?
他使用在my former question露出的第二語法:
@synthesize myTextField = _myTextField;
在此語法,吸氣myTextField
具有_myTextField
不同的名稱,以便它可以測試
if (_myTextField != nil) { ... }
如何做到這一點與經典的第一種語法,因爲getter和實例變量的名稱是相同的(myTextField
)?
或者只是我們e ARC並忘記您正在設置哪個:) – 2012-03-06 17:16:30
即使使用ARC,也不希望繞過訪問者無意中。這打破了KVO以及可能存在於存取器中的任何其他副作用。如果你使用'varName'而不是'self.varName',你會悄悄錯過這樣的懶惰實例化的副作用。 – 2012-03-06 17:20:52
@ RichardJ.RossIII是使用弧消除了很多內存頭痛,但我一般堅持約定,所以你知道你正在訪問。同樣使用ARC不會改變延遲加載實現,上面的代碼適用於ARC和內存管理的應用程序(假設varName被保留) – wattson12 2012-03-06 17:21:07