美文网首页
block 的 MRC 和 ARC 的内存管理 和 其他理论知识

block 的 MRC 和 ARC 的内存管理 和 其他理论知识

作者: Fade1992 | 来源:发表于2019-04-09 18:30 被阅读0次
    blcok是一个对象
    定义:官方文档-> Window -> Documentation and API Refrence -> 搜索 working with blocks (关于原理性)   
    结果:Blocks are objective-C objects 
    
    

    判断工程使用MRC还是ARC

    • dealloc 能否被调用,只有MRC 才能调用super
    • retain 和 release 能否使用

    修改方法:
    Budld Setting -> 搜索ARC -> objective-c Automic Refrence Counting 切换 YES or NO


    ARC 管理原则:

    • 只要一个对象没有被强指针修饰就是被销毁,默认局部变量对象都是强指针,存放到堆里面

    MRC 开发常识

    • 1.MRC没有Strong、weak 局部变量对象就是相当于基本数据类型
    • 2.MRC给成员属性赋值 一定时候用Set方法,不能直接访问下划线成员属性赋值

    堆、栈、全局区
    • MRC 管理总结

      • 只要block没有引用外部局部变量,block放在全局区 (NSGlobalBlock)
      • 只要block引用外部局部变量block放在栈里面(NSStackBlock)
      • block 只能使用copy(堆 NSMallocblock) 不能使用retain(NSStackBlock)
    • ARC 中的内存管理

      • 只要block没有引用外部局部变量,block放在全局区 (NSGlobalBlock)
      • 只要block引用了外部局部变量block 在堆中
      • block 使用Strong 不要使用weak

    blok的变量传递
    1.如果是局部变量 block 是只传递
    2.如果是静态变量、全局变量、 __block修饰变量 block 是指针传递

    相关文章

      网友评论

          本文标题:block 的 MRC 和 ARC 的内存管理 和 其他理论知识

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