Block的类型

作者: 南城同學 | 来源:发表于2019-08-26 22:31 被阅读0次
    block有3种类型,可以通过调用class方法或者isa指针查看具体类型,最终都是继承自NSBlock类型
    • __NSGlobalBlock__( _NSConcreteGlobalBlock )
    • __NSStackBlock__ ( _NSConcreteStackBlock )
    • __NSMallocBlock__ ( _NSConcreteMallocBlock )

    区分:
    • 访问auto变量的block -->存储在栈中的 __NSStackBlock___;

    • 没有访问auto变量的block -->存储在数据段中的 __NSGlobalBlock__;
      ⚠️:__NSStackBlock___是存储在栈上的,存在的隐患就是随时可能被销毁。所以在ARC环境下,会自动对block进行一次copy操作,将其转换为存储在堆上的__NSMallocBlock__

    • 每一种类型的block调用copy后的结果如下所示:


    相关文章

      网友评论

        本文标题:Block的类型

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