码迷,mamicode.com
首页 > 其他好文 > 详细

Objective-C 内存管理机制

时间:2015-06-15 12:58:38      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

为什么要进行内存管理?
  由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继续使用的内存空间,比如回收一些不再使用的对象和变量等。
 
OC内存管理方式?
  OC的内存管理不同于其他高级语言如C#、Java都是通过垃圾回收机制,ObjC内存管理采用引用计数机制。
  管理范围:任何继承NSObject的对象,对其他的基本数据类型无效。
 
什么是引用计数?
  引用计数机制:在ObjC中每个对象内部都有一个与之对应的整数(retainCount),叫“引用计数器”,当一个对象在创建之后它的引用计数器为1,当调用这个对象的alloc、retain、new、copy方法之后引用计数器自动在原来的基础上加1(ObjC中调用一个对象的方法就是给这个对象发送一个消息),当调用这个对象的release方法之后它的引用计数器减1,如果一个对象的引用计数器为0,则系统会自动调用这个对象的dealloc方法来销毁这个对象。
 
什么是自动引用技术?
  自动引用计数:指内存管理中对引用采取自动计数的技术。苹果官方说明如下:在Objective-C中采取Automatic Refrence Counting(ARC)机制,让编译器来进行内存管理。“在LLVM编译器中设置ARC为有效状态,就无需再次键入retain或者release代码”换言之,满足以下条件无需手动输入retain和release代码了。
1.使用Xcode4.2以上版本;
2.使用LLVM编译器3.0或者以上版本;
3.编译器选项中设置ARC为有效。
满足以上条件,编译器将自动管理内存。      
注?若需要在Xcode中关闭ARC:项目属性—Build Settings--搜索“garbage”找到Objective-C Automatic Reference Counting设置为No即可。
 
内存管理原则?
原则1  

只要还有人在使用某个对象,那么这个对象就不会被回收;

只要你想使用这个对象,那么就应该让这个对象的引用计数器+1;

当你不想使用这个对象时,应该让对象的引用计数器-1;

原则2  谁创建,谁release

(1)如果你通过alloc,new,copy来创建了一个对象,那么你就必须调用release或者autorelease方法

(2)不是你创建的就不用你去负责

原则3  谁retain,谁release

只要你调用了retain,无论这个对象时如何生成的,你都要调用release

总结:有始有终,有加就应该有减。曾经让某个对象计数器加1,就应该让其在最后-1.

 

 
 
 
 
 
 
 

Objective-C 内存管理机制

标签:

原文地址:http://www.cnblogs.com/echo-imax/p/4576757.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!