美文网首页iOS Tech
调用 nil 对象的 method 之后?

调用 nil 对象的 method 之后?

作者: RYANIM | 来源:发表于2018-01-23 20:13 被阅读1次

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

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

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

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

    相关文章

      网友评论

        本文标题:调用 nil 对象的 method 之后?

        本文链接:https://www.haomeiwen.com/subject/eidaixtx.html