转自:iOS 知识小集 我们在调用block时,如果这个block为nil,则程序会崩溃,报类似于EXC_BAD_ACCESS(code=1, address=0xc)异常[32位下的结果,如果是64位,则address=0x10].如图1,这个异常表示程序在试图读取内存地址0xc的信息时出错. 在定义一个block时,编译器会在栈上创建一个结构体,类似于图2的结构体. block就是指向这个结构体的指针.其中的invoke就是指向具体实现的函数指针.当block被调用时,程序最终会跳转到这个函…