=》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的引用计数是一个很大的数。