码迷,mamicode.com
首页 > 其他好文 > 详细

内存管理的思考方式2(ARC下)

时间:2017-12-12 00:09:28      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:超出   管理   ase   变量赋值   自己   循环引用   方式   赋值   需要   

所有权修饰符

所有权修饰符共有四种

  • __strong
  • __weak
  • __unsafe_unretained
  • __sutoreleasing

__strong修饰符

是id类型和对象类型默认的所有权修饰符,通过__strong修饰符,不必再次键入retain或者release,完美的满足了‘引用计数式内存管理的思考方式’:

  • 自己生成的对象自己持有
  • 非自己生成的对象,自己也可以持有
  • 不再需要自己持有的对象时释放
  • 非自己持有的对象无法释放

前两项只需通过对带__strong修饰符的变量赋值即可达成。通过废弃带__strong修饰符的变量(变量作用域结束或是成员变量所属对象废弃)或者对变量赋值,

都可以做到第三项,最后一项“非自己持有的对象无法释放”,由于不必再次键入release,所以原本就不会执行。

__weak修饰符

__weak是为了解决循环引用问题而存在的,循环引用容易发生内存泄漏。所谓内存泄漏就是应当废弃的对象在超出其生存范围后继续存在。

__weak还有另一优点,在持有某对象的弱引用时,若该对象被废弃,则此弱引用讲自动失效并被置为nil的状态。

__unsafe_unretained修饰符

是不安全的所有权修饰符,尽管ARC式的内存管理是编译器的工作,但附有__unsafe_unretained修饰符的变量不属于编译器的内存管理对象。

__autoreleasing修饰符

 

内存管理的思考方式2(ARC下)

标签:超出   管理   ase   变量赋值   自己   循环引用   方式   赋值   需要   

原文地址:http://www.cnblogs.com/lmg4819/p/8025570.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!