欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

详解IOS开发学习笔记案例分析

来源: 开发者 投稿于  被查看 31137 次 评论:196

详解IOS开发学习笔记案例分析


IOS开发学习笔记案例分析是本文要介绍的内容,主要讲解ViewDidUnload使用方法和iOS 5的内存管理例子的内容,来看详细内容。

ViewDidUnload使用方法

当系统内存吃紧的时候会调用该方法注:viewController没有被dealloc)

内存吃紧时,在iPhone OS 3.0之前didReceiveMemoryWarning是释放无用内存的唯一方式,但是OS 3.0及以后viewDidUnload方法是更好的方式

在该方法中将所有IBOutlet无论是property还是实例变量)置为nil系统release view时已经将其release掉了)

在该方法中释放其他与view有关的对象、其他在运行时创建但非系统必须)的对象、以及在viewDidLoad中被创建的对象

release对象后,将对象置为nilIBOutlet只需要将其置为nil,系统release view时已经将其release掉了)

一般认为viewDidUnload是viewDidLoad的镜像,因为当view被重新请求时,viewDidLoad还会重新被执行

viewDidUnload中被release的对象必须是很容易被重新创建的对象比如在viewDidLoad或其他方法中创建的对象),不要release用户数据或其他很难被重新创建的对象

iOS 5的内存管理例子
 
iOS5中使用了Objective-C Automatic Reference Counting 自动引用计数机制,在编程中不需要我们主动retain/release/autorelease一个对象了。

MyClass的dealloc中打印了

  1. NSLog(@"%s %d", __FUNCTION__, __LINE__); 

在AppDelegateDidFinishLaunching中做如下处理:

  1. NSLog(@"before 1");  
  2. {  
  3.     static MyClass *m = nil;  
  4.       
  5.     m = [[MyClass alloc] init];// m没有被销毁,所指向对象也没有被销毁  
  6. }  
  7. NSLog(@"after 1");  
  8. NSLog(@"before 2");  
  9. {  
  10.     MyClass *m = nil;  
  11.     m = [[MyClass alloc] init];   // m被销毁,对象同时也被销毁。  

打印结果:

  1. 2011-07-10 00:59:44.556 aaaaa[4965:207] before   
  2. 2011-07-10 00:59:44.558 aaaaa[4965:207] after   
  3. 2011-07-10 00:59:44.558 aaaaa[4965:207] before   
  4. 2011-07-10 00:59:44.558 aaaaa[4965:207] -[MyClass dealloc] 25  
  5. 2011-07-10 00:59:44.559 aaaaa[4965:207] after  

小结:IOS开发学习笔记案例分析的内容介绍完了,希望通过本文的学习能对你有所帮助!

用户评论