You can schedule a block for parallel execution using dispatch_async . Load the scene in an asynchronous block, then execute the callback method in the main thread, for example:
__weak MyClass *weakself = self;
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
dispatch_async(dispatch_get_main_queue(), ^(void){
[weakself sceneLoaded:loadedScene];
});
});
source
share