美文网首页iOS
objc中向一个nil对象发送消息将会发生什么?

objc中向一个nil对象发送消息将会发生什么?

作者: natewang | 来源:发表于2016-04-24 19:43 被阅读1967次

什么都不会发生!!!事实上发生了些事情。

SomeClass * someObject;
someObject = nil;
[someObject doSomething];

就像这样,向nil发送了doSomething;OC中nil是被当做0定义的。也就是说runtime要去获取这个nil的信息,会去读取内存中0的位置,这肯定是不允许的,会返回nil,0,0.0等数据,根据返回值类型。

比较让你混淆的是,僵尸对象。僵尸对象并不是nil,僵尸对象是你的object被销毁或者用于其他地方了,但是指向它的指针还在。会发生向一个object发送一个它没有的方法。

相关文章

网友评论

    本文标题:objc中向一个nil对象发送消息将会发生什么?

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