1
如何在使用alloc和init創建對象時設置保留屬性? (不使用自動釋放)創建對象並設置保留屬性
這一行的標題(和實施相應的@synthesize線):
@property(retain)UIWebView *webView;
這是三個選項我有(我認爲):
UIWebView *tempWebView = [[UIWebView alloc] init];
[tempWebView setDelegate:self];
tempWebView.hidden = YES;
self.webView = tempWebView;
[tempWebView release];
(這一個似乎是最好的關於內存管理,但它更多的代碼,涉及一個愚蠢的變量名,所以減少在可讀性)
self.webView = [[UIWebView alloc] init];
[self.webView release];
[self.webView setDelegate:self];
self.webView.hidden = YES;
(這一次是發生了什麼,但內存管理似乎並不很大,也Xcode的分析器不喜歡它)
webView = [[UIWebView alloc] init];
[self.webView setDelegate:self];
self.webView.hidden = YES;
更明顯
(這個是最短的,比第一個例子更明顯。但是,它繞過了二傳手,所以應設置器的自定義實現稍後才能實現它不會在這種情況下工作)
所以應使用的例子,或者是有沒有更好的辦法?
請記住,第三個選項不釋放的'webView'以前的值。這將是我在初始化程序中的首選選項,因爲在初始化程序中不會使用訪問程序,但在其他方法中不需要確保釋放先前的值。 – albertamg
同意,這就是爲什麼我寫道:「特別是當它屬於初始化方法時......」您的評論使我的意思完全清楚,儘管我表達得不是那麼好...... :-)所以你離開了用便利的構造函數選項...:-) – sergio
我寫評論的時候還沒有看到過你的編輯。我只是想說清楚:) – albertamg