确定UIViewController已加载并具有有效视图的最佳方法是什么?

Ben*_*ieb 15 iphone cocoa-touch objective-c

当访问UIViewController的view属性时,它首先检查它是否有现有视图,然后返回.如果没有,它会加载其nib或调用-loadView.

当控制器收到-didReceiveMemoryWarning消息时,默认行为是删除该缓存视图(假设它当时未使用).

如果我覆盖-didReceiveMemoryWarning,如何确定视图是否已被清除?我的理解是默认实现检查self.view.superview == nil.如果是这样,它将清除缓存的视图.当然,它首先检查,看看是否有一个缓存的视图,如果没有,它什么都不做.但是,作为子类,我不能调用self.view.superview,因为如果没有视图,它将生成一个.

那么,我如何判断_view是否存在?(我不能只看_view;我在为设备构建时遇到链接错误).

Zar*_*ony 67

从iPhone OS 3.0开始,您可以使用该isViewLoaded方法查看是否加载了视图.


Mik*_*lah 3

我认为在你的情况下最好做这样的事情:

- (void)setView:(UIView *)view
{
    if (!view)
    {
         // Clean up code here
    }

    [super setView:view];
}
Run Code Online (Sandbox Code Playgroud)

  • [`- [UIViewController isViewLoaded]`](http://stackoverflow.com/a/1076425/242933)。 (3认同)