Apple Adventure loadSceneAssets完成处理程序是否在完成时运行?

时间:2014-03-20 22:24:59

标签: ios grand-central-dispatch sprite-kit

以下代码取自Apple Sprite Kit Adventure示例。代码用这样的方式表示方法[self loadSceneAssets];在后台执行并在完成时,在主线程上执行提供的处理程序块。

我的问题是:它是否真的以这种方式工作,因为我无法看到允许块在完成loadSceneAssets后运行的机制。基本上,如果loadSceneAssets需要15秒才能完成,提供的块会等待15秒然后运行,还是会在loadSceneAsset方法启动后立即开始运行?

注意:这背后的想法是场景的资源(SKTextures,SKSpriteNodes等)在场景呈现之前加载并准备就绪。

#pragma mark - Shared Assets
+ (void)loadSceneAssetsWithCompletionHandler:(APAAssetLoadCompletionHandler)handler {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
        // Load the shared assets in the background.
        [self loadSceneAssets];

        if (!handler) {
            return;
        }

        dispatch_async(dispatch_get_main_queue(), ^{
            // Call the completion handler back on the main queue.
            handler();
        });
    });
}

0 个答案:

没有答案