【Objective-C 底层分析】Block

105 阅读1分钟

基础

  • 分类
    • NSGlobalBlock:位于全局区,在Block内部不使用外部变量/只使用静态变量和全局变量
    • NSMallocBlock:位于堆区,在Block内部使用外部变量或OC属性,并且赋值给强引用或copy修饰的变量
    • NSStackBlock:位于栈区,和堆区Block一样,可以在内部使用局部变量或OC属性。但是不能赋值给强引用或copy修饰的变量
  • Blockcopy到堆区的时机
    • 手动copy
    • Block作为返回值
    • 被强引用
    • copy修饰
    • 系统API包含usingBlock

底层探究

__block