2011-01-28 88 views
2

我有一個關於我經常做的事情的問題。在創建新的viewcontroller之前,我檢查以某種方式顯示在viewcontroller後面的實例變量。檢查一個viewcontroller是否存在,如果不是alloc/init(iOS)

if (self.viewcontroller == nil) { 
    //alloc and init the viewcontroller, then set the reference to this. 
} 

//Else I use the instance variable reference without making a new object of it. 

我這樣做的對象,如視圖控制器與一個單一的網絡視圖。 webview可能打開的url將會有所不同,但這是在viewWillAppear方法中設置的。

這是不好的做法?我還保留了「詳細」的視圖控制器。

在此先感謝。

回答

2

在這樣的情況下,我平時寫的getter方法是這樣的:

- (UIViewController*) viewController 
    { 
if (!viewController) 
     { 
     viewController = [[UIViewController alloc] init]; 
    // ... any other setup that needs doing at this point. 
     } 
    return viewController; 
    } 

這允許我使用[自我的viewController]在我的代碼,而不是檢查,分配,初始化,保留在我的代碼。

那是你在問什麼?

+1

使用延遲初始化(如您的示例中所示)是一個好主意,但對`-retain`的調用是不必要的,並會泄漏視圖控制器實例。不要這樣做。 – jlehr 2011-01-28 17:48:06

相關問題