【Object-C】内存管理小结

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对象


未完待续......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值