objektiv c - Hvad er den tilsvarende (hvis nogen) til C ++/Windows SendMessage () på Mac'en?

Indlæg af Hanne Mølgaard Plasc

Problem



Er der en tilsvarende funktion til SendMessage i Mac OS? [6]

Bedste reference


Ironisk nok er enhver metodeopkald i Objective-C svarende til SendMessage. Mål-C er i hjertet et budskab, der går forbi.


Så du siger bare:


[window myMessage]


og myMessage-routinen vil blive udført ved at sende myMessage til Window-objektet og have det behandle den metode ...


Det er også muligt, at det tættere på hvad du virkelig vil gøre, ville være at bruge Notifikationer til besked mellem komponenter.


Hvis du ikke har Window-objektet rundt på kompileringstid, kan kompilatoren klage det ikke ved, om vinduet kan håndtere den besked, du sender. For de tilfælde, du kan bruge:


[window performSelector:@selector(myMessage)]


Der er alternative versioner af dette opkald, der tillader at passere objekter som parametre.

Andre referencer 1


Det afhænger af hvilken meddelelse du sender med SendMessage (). De fleste begivenheder i Cocoa går gennem -[NSApplication sendEvent:] for eksempel, eller SendEventToEventTarget(), hvis du vil have en lavere version. resizing, bevægelse osv. du skal se på de relevante metoder for NSWindow (som -setFrame:animated:) eller NSAapplication.


Generelt, i stedet for at bruge en tragt rutine og funktionskonstanter som SendMessage () gør i Cocoa du bare få fat i det relevante objekt og kalde dets metoder.

Andre referencer 2


På et højere niveau, hvis du taler om Carbon Event Manager, ville du bruge funktionen 'SendEventToEventTarget'


Se http://developer.apple.com/documentation/Carbon/Reference/Carbon\_Event\_Manager\_Ref/Reference/reference.html[7]