我一直在使用我的应用程序中的成功,宏大的中央调度,但我想知道使用这样的东西的真正优势是什么:
dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff
Run Code Online (Sandbox Code Playgroud)
甚至
dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff
Run Code Online (Sandbox Code Playgroud)
我的意思是,在这两种情况下,你都要触发一个块来在主线程上执行,确切地说应用程序在哪里运行,这无助于减少负载.在第一种情况下,当块运行时,您没有任何控制权.我已经看到在你开火后半秒执行块的情况.第二种情况,它类似于
[self doStuff];
Run Code Online (Sandbox Code Playgroud)
对?
我想知道你们的想法是什么.
是否可以使用通知回复到IOS应用程序的主线程?(cf performSelectorOnMainThread).也就是说,为此目的有没有任何gottcha?
背景
例如
[[NSNotificationCenter defaultCenter] postNotificationName:@"ModelChanged" object:self];
Run Code Online (Sandbox Code Playgroud) 我可以在给定队列中发布通知并在另一个队列中接收通知吗?我想使用通知来传达不同的队列,但我不确定这是否安全......
concurrency cocoa-touch objective-c grand-central-dispatch nsnotificationcenter