0
我正在使用Objective-C,我對消息傳遞術語有疑問。在這行代碼對象用於發送消息或接收消息?
[obj dosomething];
無論對象obj
被髮送消息dosomething
,或接收消息? 如果它發送一條消息,那麼我想知道,它究竟意味着什麼?堆內存中可能發生什麼?
謝謝
我正在使用Objective-C,我對消息傳遞術語有疑問。在這行代碼對象用於發送消息或接收消息?
[obj dosomething];
無論對象obj
被髮送消息dosomething
,或接收消息? 如果它發送一條消息,那麼我想知道,它究竟意味着什麼?堆內存中可能發生什麼?
謝謝
在這個例子中,你的程序員正在發送消息,doSomething
,到obj
實例。在這種情況下,這會調用obj
實例上的Objective-C運行時方法objc_msgSend
。如果obj
執行doSomething
,則會調用該方法,但如果不存在,則會得到「選擇器未識別」異常,並且您的應用程序將崩潰。
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtHowMessagingWorks.html#//apple_ref/doc/uid/TP40008048-CH104-SW1 – DaidoujiChen
「消息發送」 在Objective-C純粹是從OO早期語言中借用的術語怪癖。根據這個術語,[obj dosomething]是將「dosomething」消息「發送」給對象'obj'。實際上,這是對對象obj的方法'dosomething'的一個(相對)簡單的調用。 –