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