现在的位置: 首页 > 综合 > 正文

iPhone开发札记【2011.10.28】

2017年12月07日 ⁄ 综合 ⁄ 共 529字 ⁄ 字号 评论关闭

=》Objective-C内存管理

摘自《iPhone/Mac Objective-C内存管理教程和原理剖析

1. 执行对象的dealloc,会直接释放对象的内存空间,销毁对象;调用对象的release方法,将对象的引用计数-1,当引用计数为0时,执行dealloc释放内存;

2. 指针赋值操作不会增加对象的引用计数

3. NSAutoreleasePool内部包含一个数组(NSMutableArray),用于保存声明为autorelease的所有对象。如果一个对象声明为autorelease,系统所做的工作就是把这个对象加入到这个数组中去。

4. NSAutoreleasePool自身在销毁的时候,会遍历一遍这个数组,release数组中的每个成员。若release后数组成员的引用计数大小0,则对象不被销毁。

5. release一个空指针是合法的,不会发生任何事情;

6. 在生成新的run loop时,系统会创建新的autorelease pool。此处不同于xcode中在新建项目时自动生成代码中加入的autorelease pool。系统自动创建的新的autorelease pool无法删除。

7. NSString *str = @"abc"中,str的引用计数是一个很大的数。

抱歉!评论已关闭.