Objective-C学习笔记(内存管理和自动引用计数)

对象引用和自动释放池

给对象发送autorelease消息,将一个对象添加到有自动释放池维护的对象列表中。
程序中使用来自Foundation、UIKit、AppKit框架的类时,首先需要创建一个自动释放池,这样来自这些框架的类才会创建并返回自动释放的对象。

@autoerealsepool{
	//statements
}

手动内存管理规则总结

  • 如果需要保持一个对象不被销毁,可以使用retain。在使用完对象后,需要使用release进行释放。
  • 给对象发送release消息并不会直接销毁这个对象,只有当这个对象的引用计数减至0时,对象才会被销毁。然后系统会发送dealloc消息给这个对象,用于释放它的内存。、
  • 对使用了retain或者copy、mutableCopy、alloc或new方法的任何对象,以及具有retain和copy特性的属性进行释放,需要覆盖dealloc方法,使得在对象被释放的时候能够释放这些实例变量。
  • 在自动释放池被清空时,也会为自动释放的对象做些事情。系统每次都会在自动释放池被释放时发送release消息给池中的每个对象。如果池中的对象引用计数降为0,系统会发送dealloc消息销毁这个对象
  • 如果在方法中不再需要用到这个对象,但需要将其返回,可以给这个对象发送autorelease消息用于标记这个对象延迟释放。autorelease消息并不会影响到对象的引用计数。
  • 当应用终止时,内存中的所有对象都会被释放,不论他们是否在自动释放池中。
  • 随着iOS应用程序的运行,自动释放池会被创建和清空。在这种情况下吗,如果要使自动释放池被清空后自动释放的对象还能够存在,对象需要使用retain方法,只要这些对象的引用计数大于发送autorelease消息的数量,就能够在池清理后生存下来。
  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值