2012-04-15 10 views
2

Das Konzept der Nachricht ist normalerweise mit asynchronem Aufruf verbunden. Ist das bei Objective C der Fall? dh wenn ein Anrufer eine Nachricht an einen Anrufer sendet, um eine Methode darauf auszuführen, wird der Anrufer sofort fortgesetzt oder ist er blockiert, bis der Anrufer die angeforderte Methode ausgeführt hat?Wird eine Nachricht in Objective C tatsächlich asynchron gesendet?

Antwort

3

Es ist definitiv blockiert. Da die Nachrichten tatsächlich übersetzt werden im Klar C.

[myObj myMethod]; 

wird

objc_msgSend(myObj, @selector(myMethod)); 

zur Laufzeit.

Einige Methoden sind jedoch asynchron implementiert. Siehe -[NSTask launch], -[NSThread start] usw.

+0

+1, aber für diese asynchronen Methoden wird die aktuelle Methode synchron ausgeführt. Es ist nur so, dass die Arbeit der Methode asynchron gestartet und ausgeführt wird. Es gibt keine Möglichkeit, eine Nachricht asynchron zu senden. – wbyoung

+0

Danke, dann meine nächste Frage http://StackOverflow.com/Questions/10163489/How-to-Send-Message-asynchron-in-objective-c mit Ausnahme bestimmter Methoden, die Sie erwähnt. – user310291

2

Nein, wenn Sie in objective-c "send a message" lesen, müssen Sie daran denken, eine Methode aufzurufen. So eine Nachricht zu senden ist, eine Methode aufzurufen, einige sind sync, einige sind async, Sie müssen die Dokumente überprüfen, um das zu sehen.

Verwandte Themen