什么都不會發生!!!事實上發生了些事情。
SomeClass * someObject;
someObject = nil;
[someObject doSomething];
就像這樣,向nil發送了doSomething;OC中nil是被當做0定義的。也就是說runtime要去獲取這個nil的信息,會去讀取內存中0的位置,這肯定是不允許的,會返回nil,0,0.0等數據,根據返回值類型。
比較讓你混淆的是,僵尸對象。僵尸對象并不是nil,僵尸對象是你的object被銷毀或者用于其他地方了,但是指向它的指針還在。會發生向一個object發送一個它沒有的方法。