Я бы пересмотрел твой подход на твоем месте. Если вы специально не приняли меры, чтобы этого избежать, вполне вероятно, что ваш код для загрузки plist будет вызываться до того, как applicationDidFinishLaunching:
вернется. Это нехорошо, потому что если это займет много времени, сторожевой таймер может убить ваше приложение даже до того, как оно действительно будет правильно запущено. Не очень хорошая вещь.
Вы действительно должны начать загрузку в фоновом потоке и просто вставить спиннер в свой реальный вид. Так что-то вроде этого:
- (void)viewDidLoad {
...
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
spinner.center = CGPointMake(self.view.bounds.size.width / 2.0f, self.view.bounds.size.height / 2.0f);
[spinner startAnimating];
[self.view addSubview:spinner];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Do your downloading of your plist, etc
dispatch_async(dispatch_get_main_queue(), ^{
[spinner removeFromSuperview];
});
});
}