繁体   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