A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 邹志鹏 中级黑马   /  2014-12-16 15:23  /  493 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1. 1)  内存管理机制
     ObjC中提供了一个机制来实现上面提到的这个逻辑模型,它被称为引用计数”(retaincounting):
· 每一个对象都有一个引用计数(retain count)
· 对象被创建的时候,引用计数的值是1
· 当引用计数值是0的时候,对象将被系统统一销毁
· 我们可以通过调用一些方法来操作引用计数的值
获得所有权的方法:
· alloc:为一个新对象分配内存,并且它的引用计数为1。调用alloc方法,你便有对新对象的所有权
· copy:制造一个对象的副本,该副本的 引用计数为1,调用者具有对副本的所有权
· retain:使对象的引用计数加1,并且获得对象的所有权
放弃所有权的方法:
· release:使对象的引用计数减1,并且放弃对象的所有权
· autorelease:使对象的引用计数在未来的某个时候减1,并且在那个时候放弃对象的所有权
2)内存管理原则
•    对你自己拥有的对象负责,你只能释放你拥有的对象
•    凡是通过retain,alloc,copy等手段获得了所有权的对象,都必须在你不在使用他的时候,由你来调用release,autorelease等手段来释放对他的所有权
•    在一定的代码段内,对同一个对象所做的copy,allocretain的操作次数应当与release autorelease操作的次数相等
•    可以在类的dealloc方法中释放你所占有的实例变量
•    对于便利构造器和访问起来说,你没有通过上面的这些手段获得对象的所有权,因此在这些情况下你无须对获得对象进行额外的释放操作
autorelease只不过意味着预定延迟发送一条release消息,当前的引用计数器并没有变

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马