2015-06-21 155 views
0

我正在使用Objective-C,我對消息傳遞術語有疑問。在這行代碼對象用於發送消息或接收消息?

[obj dosomething]; 

無論對象obj被髮送消息dosomething,或接收消息? 如果它發送一條消息,那麼我想知道,它究竟意味着什麼?堆內存中可能發生什麼?

謝謝

+2

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtHowMessagingWorks.html#//apple_ref/doc/uid/TP40008048-CH104-SW1 – DaidoujiChen

+2

「消息發送」 在Objective-C純粹是從OO早期語言中借用的術語怪癖。根據這個術語,[obj dosomething]是將「dosomething」消息「發送」給對象'obj'。實際上,這是對對象obj的方法'dosomething'的一個(相對)簡單的調用。 –

回答

0

在這個例子中,你的程序員正在發送消息,doSomething,到obj實例。在這種情況下,這會調用obj實例上的Objective-C運行時方法objc_msgSend。如果obj執行doSomething,則會調用該方法,但如果不存在,則會得到「選擇器未識別」異常,並且您的應用程序將崩潰。