1. //三个结构体
    2. //block的结构体定义
    3. struct __main_block_impl_0 {
    4. struct _block_impl impl;//Block isa ,函数地址等定义
    5. struct __main_block_desc_0 *Desc;//Block size等信息定义
    6. };
    7. struct _block_impl {
    8. void *isa;//所属的类
    9. int Flags;
    10. int Reserved;
    11. void *FuncPtr;//函数地址
    12. };
    13. struct __main_block_desc_0 {
    14. unsigned long reserved;
    15. unsigned long Block_size;
    16. }
    17. //两个函数
    18. //Block信息初始化的函数
    19. __main_block_impl_0(void *fp,struct __main_block_desc_0 *desc, int flags=0)
    20. {
    21. impl.isa = &_NSConcreteStackBlock;
    22. impl.Flags = flags;
    23. impl.FuncPtr = fp;
    24. Desc = desc;
    25. }
    26. //我们的Block里面的函数,_cself就是调用这个函数的调用者的指针
    27. static void __main_block_func_0(struct __main_block_impl_0 *_cself)
    28. {
    29. printf("Block\n");
    30. }