2011-01-28 87 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

相关问题