iOS Tech

调用 nil 对象的 method 之后?

2018-01-23  本文已影响1人  RYANIM

如果对象类型是 Object, 返回 nil; 如果是 int、 bool 等基本类型, 则返回 0.
如果调用 block 则会 crash.

那这几种情况中发生了什么?

首先调用 block 和其他几种不一样, 其他都是 msgSend 的模式, 而调用 block 是读取内存地址来执行的. nil 的 block 还是按照定义的 block 长度去读取地址, 自然读取了其他东西, segmentation fault.

msgSend 的调用模式是 runtime 来判断调用的对象是否为 nil, 从而返回和调用对象相对应的0值对象. id(0) = nil, 0, 0*(指针对象).

上一篇下一篇

猜你喜欢

热点阅读