cocoa 一些回调函数被调用的时机
来源:互联网 发布:斯嘉丽 约翰逊 知乎 编辑:程序博客网 时间:2024/05/22 16:50
转自 http://blog.csdn.net/zhaozy55555/article/details/7600985
「initWithNibName: bundle:」载入nib档案来初始化
「loadView」载入视图
「viewDidLoad」在载入视图至内存后会呼叫的方法
「viewDidUnload」在视图从内存中释放后会呼叫的方法
「viewWillAppear」当收到视图在视窗将可见时的通知会呼叫的方法
「viewWillDisappear」當收到視圖在視窗將不可見時的通知會呼叫的方法
「viewDidAppear」当收到视图在视窗将不可见时的通知会呼叫的方法
「viewDidDisappear」当收到视图已去除、被覆盖或隐藏于视窗时的通知会呼叫的方法
「didReceiveMemoryWarning」收到系统传来的内存警告通知后会执行的方法
「shouldAutorotateToInterfaceOrientation」是否支持不同方向的旋转视图
「willAnimateRotationToInterfaceOrientation」在进行旋转视图前的会执行的方法(用于调整旋转视图之用)
UIView的一些基本方法理解:loadView、viewDidLoad、viewDidUnload、viewWillAppear、viewWillDisappear
经常使用UIView以及它的子类,一般对于init:,viewDidLoad:,dealloc:等方法应该是比较熟悉和了解的。
对于其它几个基本方法就不那么常用了,为了更好地编程使用这些方法,在此集中收集整理一下各方法调用的时机和作用:
init:方法
在init方法中实例化必要的对象(遵从LazyLoad思想)
init方法中初始化ViewController本身
loadView:方法
这是当没有正在使用nib视图页面,子类将会创建自己的自定义视图层。绝不能直接调用。
如果手工维护views,必须重载重写该方法。
当view需要被展示而它却是nil时,viewController会调用该方法。
loadView和IB构建view
你在控制器中实现了loadView方法,那么你可能会在应用运行的某个时候被内存管理控制调用。 如果设备内存不足的时候, view 控制器会收到didReceiveMemoryWarning的消息。 默认的实现是检查当前控制器的view是否在使用。 如果它的view不在当前正在使用的view hierarchy里面,且你的控制器实现了loadView方法,那么这个view将被release, loadView方法将被再次调用来创建一个新的view。
viewDidLoad:方法
在视图加载后被调用:
如果是在代码中创建的视图加载器,他将会在loadView方法后被调用;
如果是从nib视图页面输出,他将会在视图设置好后后被调用。
重载重写该方法以进一步定制view
在iPhone OS 3.0及之后的版本中,还应该重载重写viewDidUnload来释放对view的任何索引
viewDidLoad后调用数据Model
viewDidUnload:方法
当系统内存吃紧的时候会调用该方法(注:viewController没有被dealloc)
内存吃紧时,在iPhone OS 3.0之前didReceiveMemoryWarning是释放无用内存的唯一方式,但是OS 3.0及以后viewDidUnload方法是更好的方式
在该方法中将所有IBOutlet(无论是property还是实例变量)置为nil(系统release view时已经将其release掉了)
在该方法中释放其他与view有关的对象、其他在运行时创建(但非系统必须)的对象、在viewDidLoad中被创建的对象、缓存数据等 release对象后,将对象置为nil(IBOutlet只需要将其置为nil,系统release view时已经将其release掉了)
一般认为viewDidUnload是viewDidLoad的镜像,因为当view被重新请求时,viewDidLoad还会重新被执行
viewDidUnload中被release的对象必须是很容易被重新创建的对象(比如在viewDidLoad或其他方法中创建的对象),不要release用户数据或其他很难被重新创建的对象
dealloc:方法
viewDidUnload和dealloc方法没有关联,dealloc还是继续做它该做的事情
viewWillAppear: 方法
Called when the view is about to made visible. Default does nothing
视图即将可见时调用。默认情况下不执行任何操作
viewDidAppear:
Called when the view has been fully transitioned onto the screen. Default does nothing
视图已完全过渡到屏幕上时调用
viewWillDisappear:
Called when the view is dismissed, covered or otherwise hidden. Default does nothing
视图被驳回时调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作
viewDidDisappear:
Called after the view was dismissed, covered or otherwise hidden. Default does nothing
视图被驳回后调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作
看到以下的代码
- (void)viewDidUnload {
self.detailViewController = nil;
self.languageNames = nil;
self.languageCodes = nil;
}
- (void)dealloc {
[detailViewController release];
[languageNames release];
[languageCodes release];
[super dealloc];
}
- cocoa 一些回调函数被调用的时机
- cocoa 一些回调函数被调用的时机
- 设置listener,一定时机调用特定回调函数
- AppDelegate中几个常用的回调函数的调用时机
- 关于 回调函数 的一些东东
- 回调函数的一些总结
- 回调函数的一些理解
- 回调函数的一些总结
- 关于回调函数的一些问题解决
- 关于回调函数的一些理解
- 了解回调函数的一些总结
- c#调用c++的回调函数
- VB 函数 CallByName 的一些用法 (函数动态调用,回调函数)
- flex 回调函数没有被调用
- C++调用Fortran库回调函数的调用约定
- 同步调用、回调函数、异步调用
- 关于BREW中回调函数的一些讲解
- 关于回调函数和多线程的一些问题
- web前端研发工程师编程能力成长之路 [转]
- iOS 5两大隐藏特性
- POJ1962 Corporative Network
- 视频教程
- UIView的autoresizingMask
- cocoa 一些回调函数被调用的时机
- Buffer创始人谈开发:先验证,后编程!
- CSLinearLayoutView
- 本地推送
- java实现文件下载 中文文件名乱码的解决
- SSH整合
- 段控件利器
- C#中数组、ArrayList和List三者的区别
- 浅谈苹果商城的大部分游戏为啥不挣钱!(一)