一. OC中讓一個(gè)nil對(duì)象執(zhí)行方法不會(huì)崩潰
消息在OC中方法調(diào)用是一個(gè)消息發(fā)送的過程熟掂。OC方法最終被生成為C函數(shù),并帶有一些額外的參數(shù)铝宵。這個(gè)C函數(shù)objc_msgSend就負(fù)責(zé)消息發(fā)送华畏。在runtime的objc/message.h中能找到它的API鹏秋。
objc_msgSend(void /* id self, SEL op, ... */ )
消息發(fā)送的時(shí)候,在C語言函數(shù)中會(huì)有很多步驟,其中第二步,就是檢測(cè)這個(gè)selector的target是不是nil侣夷,OC允許我們對(duì)一個(gè)nil對(duì)象執(zhí)行任何方法不會(huì)Crash横朋,因?yàn)檫\(yùn)行時(shí)會(huì)被忽略掉。