loadView、viewDidLoad和viewDidUnload的区别

一、loadView

在不使用xib创建视图时,分两种情况。第一、实现文件中不重载改方法,则该方法的默认操作是创建一个UIView给当前VC的view。第二、重建该方法,则必须要在该方法中新建一个UIView给当前VC的view,并且重写该函数时不应该调用super。在该函数中可以加载一些控件,但是不建议再此处添加。

- (void)loadView
{
    // If you create your views manually, you MUST override this method and use it to create your views.
    // If you use Interface Builder to create your views, then you must NOT override this method.
    
    UIView *view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
    [view setBackgroundColor:[UIColor whiteColor]];
    self.view = view;
    [view release];
    
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 100, 40)];
    label.backgroundColor = [UIColor redColor];
    [self.view addSubview:label];
    [label release];
    
}

二、viewDidload

这个函数不论是使用xib还是loadview,都会被调用。多数情况下是做xib的一些后续初始化工作。

三、viewDidUnload

这个函数与viewDidload对立,在程序内存欠缺时,这个函数被controller调用。由于controller通常保存着与view相关的对象或者其他运行时创建的对象的引用,所以你必须使用这个函数来放弃这些对象的所有权以便内存回收。但不要释放那些难以重建的数据。

总结:

1、不论是使用xib还是纯代码创建,都可以不重写loadview,使用默认的,直接在viewDidload中加载控件,纯代码只需要在初始化时使用init函数即可。

2、(loadView/nib文件)来加载view到内存 ——>viewDidLoad函数进一步初始化这些view ——>内存不足时,调用viewDidUnload函数释放views

—->当需要使用view时有回到第一步      如此交替循环

参考:http://www.dreamingwish.com/dream-2011/correct-online-information-error-loadview-viewdidload-viewdidunload.html

posted @ 2012-10-04 18:51  FoxBabe  阅读(608)  评论(0编辑  收藏  举报