目标C发送的消息是不按异步回答我得到了Is sending a message in Objective C actually asynchronous?如何异步发送消息的目标C
所以我的下一个问题是如何真正目标C异步发送消息(同一应用程序内)是它甚至可能(不诉诸像线程这样的复杂东西)?
目标C发送的消息是不按异步回答我得到了Is sending a message in Objective C actually asynchronous?如何异步发送消息的目标C
所以我的下一个问题是如何真正目标C异步发送消息(同一应用程序内)是它甚至可能(不诉诸像线程这样的复杂东西)?
检查文档集中Apple的“并发编程指南”。您有诸如线程,操作队列,调度队列等选项。这是一个很大的课题。
As我写道,没有线程。我想要一些简单的传统意义上的消息,有点像事件。 – user310291 2012-04-15 20:27:44
然后不要使用它们;我指出的文件提供了很多选择。 – 2012-04-16 00:49:48
如果您想使用Apple框架进行真正的异步方法调用,只需查看GCD,更确切地说就是dispatch_async
。
GCD可用于iOS和OSX,Apple知道接下来会发生什么,因此使用此“asycn API”将确保您不太容易更新不兼容性。
良好的阅读;)
编辑:好吧,如果你真的不想要任何线程,你可以宣布你正在呼吁为(oneway void)
方法。我发现虽然覆盖release
。
这里有一个SO回答解释它做什么:https://stackoverflow.com/a/5495195/700317
希望这会有所帮助。
与上述相同的说法。有趣但更复杂的是我的小需求:只是非阻塞的呼叫。 – user310291 2012-04-15 20:31:10
好吧,对不起,我没有得到无线程的东西,但是,真的,线程可以很简单(如果使用正确的方式)。我更新了我的答案,希望它能解决您的问题。 – teriiehina 2012-04-16 14:52:06
假设您试图让某些事情发生在主线程之外,有许多方法可以处理它。你使用哪一个取决于你在做什么。 看看这些苹果文档入手: https://developer.apple.com/library/mac/#documentation/Performance/Reference/GCD_libdispatch_Ref/Reference/reference.html#//apple_ref/doc/uid/TP40008079 https://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008091 https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html#//apple_ref/doc/uid/10000057i
谢谢。但为什么异步应该与并发编程相关联?我只是想要非阻塞呼叫。 – user310291 2012-04-15 20:30:32
进行非阻塞调用的能力需要并发性(多个任务在相同或几乎相同的时间执行)。 YOu可能只需要这些指南中的非常少量的信息,但他们将获得所需的任何级别的并发性所需的信息。这听起来像你只需要将你的调用打包到dispatch_async dispatch_async(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),{{0}} {{ – theMikeSwan 2012-04-15 21:42:10
线程其实没有那么复杂!他们很好地防止阻止用户界面。我建议你寻找一些'NSThread'代码示例。你会爱上线程的力量! – v1Axvw 2012-04-15 19:43:41
好吧,也许它并不复杂,但它对我的上下文需求来说太过分了:) – user310291 2012-04-15 20:32:07
' - [NSObject performSelectorOnMainThread:withObject:waitUntilDone:]'将waitUntilDone标志设为'NO'可能是最简单的方法 – v1Axvw 2012-04-15 20:45:31