内存管理

内存管理的几条原则是什么?按照默认法则,哪些关键字生成的对象需要手动释放?哪些情况下不需要手动释放,会直接进入自动释放池?
(1) OC使用了“引用计数”的内存管理机制
(2)当使用new、alloc或copy方法创建一个对象时,该对象引用计数器为1。如果不需要使用该对象,可以向其发送release或autorelease消息,在其使用完毕时被销毁。
(3)当对象调用retain方法时,引用计数值加1;调用release方法时,引用计数值减1;调用autorelease方法时,引用计数值不会立即减1,会    
        将对象放入自动释放池,当程序退出时,自动释放池会将其中的所有对象的计数值都减1; 如果retain了某个对象,需要release或
        autorelease该对象,保持retain方法和release方法使用次数相等
(4)当引用计数值为0时,系统自动调用dealloc方法,将对象内存销毁
(5)使用new、alloc、copy关键字生成的对象和retain了的对象需要手动释放,即调用release方法。设置为autorelease的对象不需要手动释
        放,会直接进入自动释放池。
(6)使用类方法创建的对象,一般会默认放入自动释放池,不需要手动调用release方法去释放其内存,如NSArray *arr = [NSArray
        arrayWithObjects:@“china”,@“beijing”];  此时arr不需要调用release方法,不然可能会出现内存释放再去调用的崩溃错误!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值