2012-04-15 67 views
0

目标C发送的消息是不按异步回答我得到了Is sending a message in Objective C actually asynchronous?如何异步发送消息的目标C

所以我的下一个问题是如何真正目标C异步发送消息(同一应用程序内)是它甚至可能(不诉诸像线程这样的复杂东西)?

+0

线程其实没有那么复杂!他们很好地防止阻止用户界面。我建议你寻找一些'NSThread'代码示例。你会爱上线程的力量! – v1Axvw 2012-04-15 19:43:41

+0

好吧,也许它并不复杂,但它对我的上下文需求来说太过分了:) – user310291 2012-04-15 20:32:07

+0

' - [NSObject performSelectorOnMainThread:withObject:waitUntilDone:]'将waitUntilDone标志设为'NO'可能是最简单的方法 – v1Axvw 2012-04-15 20:45:31

回答

1

检查文档集中Apple的“并发编程指南”。您有诸如线程,操作队列,调度队列等选项。这是一个很大的课题。

+0

As我写道,没有线程。我想要一些简单的传统意义上的消息,有点像事件。 – user310291 2012-04-15 20:27:44

+0

然后不要使用它们;我指出的文件提供了很多选择。 – 2012-04-16 00:49:48

1

如果您想使用Apple框架进行真正的异步方法调用,只需查看GCD,更确切地说就是dispatch_async

GCD可用于iOS和OSX,Apple知道接下来会发生什么,因此使用此“asycn API”将确保您不太容易更新不兼容性。

良好的阅读;)

编辑:好吧,如果你真的不想要任何线程,你可以宣布你正在呼吁为(oneway void)方法。我发现虽然覆盖release

这里有一个SO回答解释它做什么:https://stackoverflow.com/a/5495195/700317

希望这会有所帮助。

+0

与上述相同的说法。有趣但更复杂的是我的小需求:只是非阻塞的呼叫。 – user310291 2012-04-15 20:31:10

+0

好吧,对不起,我没有得到无线程的东西,但是,真的,线程可以很简单(如果使用正确的方式)。我更新了我的答案,希望它能解决您的问题。 – teriiehina 2012-04-16 14:52:06

1
+0

谢谢。但为什么异步应该与并发编程相关联?我只是想要非阻塞呼叫。 – user310291 2012-04-15 20:30:32

+1

进行非阻塞调用的能力需要并发性(多个任务在相同或几乎相同的时间执行)。 YOu可能只需要这些指南中的非常少量的信息,但他们将获得所需的任何级别的并发性所需的信息。这听起来像你只需要将你的调用打包到dispatch_async dispatch_async(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),{{0}} {{ – theMikeSwan 2012-04-15 21:42:10