美文网首页
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