iOS

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

2016-04-24  本文已影响1967人  natewang

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

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

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

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

上一篇 下一篇

猜你喜欢

热点阅读