那为什么要写成 self.myOutlet = nil; ,实际上这个语法是执行了property 里的setter 方法,而不是一个简单的变量赋值,它干了两件事:1、老数据 release掉,2、新数据(nil)retain(当 property 设置为 retain 的情况下),当然对 nil retain是无意义的。如果写成 myOutlet = nil,那就是简单的把 myOutlet 指向 nil,这样内存就泄漏了,因为老数据没有release。而如果仅仅写成 [myOutlet release] 也会有问题,因为当 view 被 dealloc 的时候会 再次release,程序就出错了,而对 nil release 是没有问题的。
dealloc 是当前 viewController 被释放的时候,清空所有当前viewController 里面的实体和数据来释放内存,该方法也是自动调用的,无需手动执行。举例说明当 modalView 被dismissModalViewControll