调用一个赋值为nil的block会咋样?

~ 如果调用一个赋值为空的 block,会发生什么情况?

-->直接 crash、block 是一个特殊的对象、赋值为 NULL 与 nil 都会闪退。

~闪退那个地址值address是多少?

-->0x10

~为什么会是0x10呢?

------>:

调用一个赋值为nil的block会咋样?_第1张图片
2018515100442022.jpg

0x10是十六进制,也就是struct基地址后的第16个字节,其中void *类型占8个字节,int类型占4个字节,所以0x10的地址就是FuncPtr的地址,而address=0x10的问题也正是对值为nil的block强行调用导致的。

0x0地址就是指向isa函数指针字段的地址,这个错误发生的原因就是调用isa造成的。

你可能感兴趣的:(调用一个赋值为nil的block会咋样?)