如果對(duì)象類型是 Object, 返回 nil; 如果是 int、 bool 等基本類型, 則返回 0.
如果調(diào)用 block 則會(huì) crash.
那這幾種情況中發(fā)生了什么?
首先調(diào)用 block 和其他幾種不一樣, 其他都是 msgSend 的模式, 而調(diào)用 block 是讀取內(nèi)存地址來執(zhí)行的. nil 的 block 還是按照定義的 block 長度去讀取地址, 自然讀取了其他東西, segmentation fault.
msgSend 的調(diào)用模式是 runtime 來判斷調(diào)用的對(duì)象是否為 nil, 從而返回和調(diào)用對(duì)象相對(duì)應(yīng)的0值對(duì)象. id(0) = nil, 0, 0*(指針對(duì)象).