1)
struct Block_descriptor { unsigned long int reserved; unsigned long int size; void (*copy)(void *dst, void *src); void (*dispose)(void *); }; struct Block_layout { void *isa; int flags; int reserved; void (*invoke)(void *, ...); struct Block_descriptor *descriptor; /* Imported variables. */ };
block本身是一个结构体;结构体的核心是代码功能块和环境变量;
2)__block是一个结构体;
3)重点关注的是block对环境变量的引用和管理。
4)block作为一个对象,copy和其它操作对环境变量的影响;在copy时对环境变量的内存管理。(与具有内存管理功能的函数很类似)
5)编译器实现全部隐含功能。