Object-c内存管理原则
1. 通过分配或复制创建的对象保持计数1
2. 假设任何别的方法获取的对象保持计数1,而且在自动释放池中.要想在当前执行范围外使用该对象,就必须保持它
3. 向集合添加对象时它就被retain,从集合移除对象时就被release.释放集合对象会释放该集合中的所有对象
4. 确保有多少alloc,copy,mutableCopy或retain消息就有多少release或autorelease消息发送给该对象.换句话说,确保你的代码平衡
5. @propperty属性设置为retain时,对属性进行赋值时自动retain
6. 用@"..."结构创建的NSString对象是常量.发送release或retain并无效果
7. 对象释放后通常要把指针设为nil
8.CTFramesetterCreateWithAttributedString、CTFramesetterCreateFrame等create函数创建的对象,引用计数为1,用CFRelease释放
9、self.object = nil 相当于[object release],object = nil;
10、addSubView:引用计数加1,removeFromSuperView应用计数减1(执行后将对象指针置为nil)
11、self.object赋新值时,会先释放旧值,重复赋值不会内存泄漏
12、对象初始化之前,应判断对象是否存在。if(object == nil){object =[[ClassName alloc] init];}
13、指针赋值前,应先将指针置为nil,如:NSString * str = nil;str = @"Hello World";
14、多线程状态下,子线程必须拥有一个autorelease pool(自动释放池)来管理autorelease对象
未完待续......