簡體   English   中英

在Mac上相當於C ++ / Windows SendMessage()(如果有)嗎?

[英]What is the equivalent (if any) to the C++/Windows SendMessage() on the Mac?

Mac OS中有與SendMessage等效的功能嗎?

具有諷刺意味的是,Objective-C中的每個方法調用都等同於SendMessage。 Objective-C本質上是一個消息傳遞系統。

所以你只說:

[window myMessage]

然后通過將myMessage傳遞給Window對象並使其處理該方法來執行myMessage例程...

還可能更接近您真正想要做的事情是使用Notifications在組件之間進行消息傳遞。

如果在編譯時沒有Window對象,則編譯器可能會抱怨它不知道Window是否可以處理您發送的消息。 對於這些情況,您可以使用:

[window performSelector:@selector(myMessage)]

此調用有替代版本,允許將對象作為參數傳遞。

這取決於您要使用SendMessage()發送的消息。 例如,可可中的大多數事件都通過-[NSApplication sendEvent:] ,如果需要較低版本的版本,則通過SendEventToEventTarget() 對於其他消息,例如調整大小,移動等,您需要查看NSWindow的適當方法(例如-setFrame:animated:或NSApplication。

一般而言,在Cocoa中,無需像SendMessage()那樣使用漏斗例程和函數常量,只需掌握相關對象並調用其方法即可。

在更高層次上,如果您正在談論Carbon事件管理器,則可以使用函數“ SendEventToEventTarget”

參見http://developer.apple.com/documentation/Carbon/Reference/Carbon_Event_Manager_Ref/Reference/reference.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM