什么都不会发生!!!事实上发生了些事情。
SomeClass * someObject;
someObject = nil;
[someObject doSomething];
就像这样,向nil发送了doSomething;OC中nil是被当做0定义的。也就是说runtime要去获取这个nil的信息,会去读取内存中0的位置,这肯定是不允许的,会返回nil,0,0.0等数据,根据返回值类型。
比较让你混淆的是,僵尸对象。僵尸对象并不是nil,僵尸对象是你的object被销毁或者用于其他地方了,但是指向它的指针还在。会发生向一个object发送一个它没有的方法。