如果我有这样的块:
(void) ^contrivedExample = ^{//some expensive operation//};
并像这样使用它:
int test = 1;
contrivedExample()
test++;
由于递增测试不会花费时间,这只会在我的块完全执行后才会发生吗?
答案 0 :(得分:2)
是的,他们会执行。只有在昂贵的块完成执行后才会发生增量。
如果你需要刷上你的积木,这里有一个很好的解读: https://developer.apple.com/library/ios/documentation/cocoa/Conceptual/Blocks/Articles/00_Introduction.html
答案 1 :(得分:2)
是。在块完全执行完毕后,将发生递增test
。块本身并不是异步的,尽管它们经常被 异步的API使用。
答案 2 :(得分:2)
是。您甚至可以通过调用dispatch_sync
或dispatch_async
来使其在不同的主题上运行。
dispatch_sync
表示块在不同的线程上运行,而当前线程等待块完成。
dispatch_async
将块发送到另一个线程,当前线程继续。