iOS--Block

2016-09-11  本文已影响0人  ihuangyg

先定个小目标,例如整理一篇关于 block 的笔记

```objc
int main(int argc, const char * argv[]) {
    /* @autoreleasepool */ { __AtAutoreleasePool __autoreleasepool; 
     
        void (*myBlock)(void) = ((void (*)())&__main_block_impl_0((void *)__main_block_func_0, &__main_block_desc_0_DATA)) ;
        
        ((void (*)(__block_impl *))((__block_impl *)myBlock)->FuncPtr)((__block_impl *)myBlock) ;
    }
    return 0;
}
```
  1. 综上所述,我们应该能够明白下面代码的作用了,就是将创建一个 block,初始化该结构体,在构造函数中传入自身(self) __main_block_func_0 结构体和基本信息。

    (*myBlock) = &__main_block_impl_0(__main_block_func_0, &__main_block_desc_0_DATA) ;
    
  2. 得到新创建的 block 后,当我们调用原本代码的 block时候,就相当于调用:

    myBlock -> FunPtr
    

参考资料

上一篇 下一篇

猜你喜欢

热点阅读