iOS程序中异步块的内部工作?
我使用以下方法浏览iPhone中的照片库:iOS程序中异步块的内部工作?,ios,asynchronous,objective-c-blocks,Ios,Asynchronous,Objective C Blocks,我使用以下方法浏览iPhone中的照片库: enumerateGroupsWithTypes:usingBlock:failureBlock: 从API文档和我的测试中,我知道块是异步运行的。然而,我的问题是:这个块是如何异步运行的 也就是说,它是否通过与主线程相同的runloop运行?还是通过新的和不同的运行循环 另外,它是否在新的和不同的线程中运行?(假设“线程”与“运行循环”不同) 假设我想做一些事情来更新块内的视图(UI),尤其是: [collectionView reloadData
enumerateGroupsWithTypes:usingBlock:failureBlock:
从API文档和我的测试中,我知道块是异步运行的。然而,我的问题是:这个块是如何异步运行的
也就是说,它是否通过与主线程相同的runloop运行?还是通过新的和不同的运行循环
另外,它是否在新的和不同的线程中运行?(假设“线程”与“运行循环”不同)
假设我想做一些事情来更新块内的视图(UI),尤其是:
[collectionView reloadData].
如何处理此“重新加载数据”消息?它将在与块本身相同的运行循环中处理吗?[更新问题:相对于此块的执行,“重新加载数据”是异步的还是同步的?]
最后,如果我问了一些愚蠢的问题,有人能推荐一本书或其他指南来理解iOS程序中异步块的内部工作原理吗?例如,它与运行循环和线程的关系如何
谢谢
块有点像正则函数。。。因此,重载数据通常是同步的,在块中使用时将保持同步,因此谢谢。根据我的测试,它看起来像:1)当主线程有空闲时间时执行块。2) 该块作为单个步骤执行,即主线程和该块之间没有并行执行。关于一本好书。。我不确定。。但大多数最新的iOS编码书籍都有关于GCD的章节。那应该work@user1783732不,主_队列是串行的——永远只能有一个函数——一个块,在这两个块之间有办法推进runloop,除非您自己在该函数中调用它