代码之家  ›  专栏  ›  技术社区  ›  joshcomley

MAC上的C++/Windows StEnMeXeAGE()有什么等价(如果有的话)?

  •  1
  • joshcomley  · 技术社区  · 15 年前

    有等价函数吗 SendMessage 在Mac OS中?

    3 回复  |  直到 15 年前
        1
  •  6
  •   Kendall Helmstetter Gelner    15 年前

    具有讽刺意味的是,Objective-C中的每个方法调用都等价于sendmessage。目标C本质上是一个信息传递系统。

    所以你只需说:

    [window myMessage]
    

    而mymessage例程将通过将mymessage传递给window对象并让它处理该方法来执行。

    也有可能更接近您真正想要做的事情是在组件之间使用消息通知。

    如果您在编译时没有window对象,编译器可能会抱怨它不知道window是否可以处理您发送的消息。对于这些情况,您可以使用:

    [window performSelector:@selector(myMessage)]
    

    此调用的其他版本允许将对象作为参数传递。

        2
  •  1
  •   Jim Dovey    15 年前

    这取决于使用sendmessage()发送的消息。可可中的大多数事件都经过 -[NSApplication sendEvent:] 例如,或 SendEventToEventTarget() 如果你想要更低级的版本。对于其他消息,如调整大小、移动等,您需要查看nswindow的适当方法(例如 -setFrame:animated: )或不适用。

    一般来说,在cocoa中,您不必像sendmessage()那样使用漏斗例程和函数常量,而只需获取相关对象并调用其方法。

        3
  •  0
  •   NineBerry    15 年前

    在更高的层次上,如果您谈论的是Carbon事件管理器,那么您将使用函数“sendEventToEventTarget”。

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