美文网首页
IOS 内存管理

IOS 内存管理

作者: 1234yws | 来源:发表于2019-03-07 14:21 被阅读0次
引用类型
  • 强引用
    强引用是默认的引用类型,被强引用的内存不会被释放,强引用的引用计数会+1,从而扩展对象的生命周期
  • 弱引用
    弱引用是一种特殊的引用类型,他不会增加引用计数,因而不会扩展对象的生命周周期。
属性修饰符
  • strong 默认修饰符。
    创建对象后引用计数为1,在对象引用期间不会被回收
  • weak
    创建对象后引用计数为0,对象会被立即释放,且对象会被置为nil
  • assign
    创建对象后引用计数为0,对象会被立即释放,且对象不会被置为nil
  • copy
    创建对象后引用计数为1,当方法返回时对象会被立即释放
  • retain
    创建对象后引用计数为1,在对象引用期间不会被回收
  • unsafe_unretained
    创建对象后引用计数为0,对象会被立即释放,且对象不会被置为nil

如何避免内存泄漏、循环引用等一些消耗内存的情况出现

  • 防止循环引用
    不让对象相互持有
  • 避免大量的单例
    因为单例常常会在程序启动的时候进行初始化,而使用单例的组件需要等待他们准备好,这样就会增长应用的启动时间。尤其是第三方组件。
  • 对子对象使用__strong
  • 对父对象使用__weak
  • 对使引用图闭合的对象(如委托)使用__weak
  • 对数值属性(基本类型),使用assign限定符
  • 对于块使用,使用copy限定符
  • 避免块内直接引用外部的变量,在块外将他们weakify,并且在块内再将他们呢strongify。
  • 进行必要的清理
    销毁计时器
    移除观察者(移除对通知的注册和KVO)
    解除毁掉(将强引用的委托设置为nil)

相关文章

网友评论

      本文标题:IOS 内存管理

      本文链接:https://www.haomeiwen.com/subject/pmjcpqtx.html