Не используйте waitUntilExit
в вашем основном потоке. Это заблокирует ваш пользовательский интерфейс и заблокирует ваше приложение.
Вам необходимо подписаться на уведомление NSTaskDidTerminateNotification , которое публикуется после прекращения выполнения задачи:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(taskDidTerminate:)
name:NSTaskDidTerminateNotification
object:nil];
Обратите внимание, что уведомление можно опубликовать, если задание выполнено нормально или в результате сообщения terminate
:
- (void) taskDidTerminate:(NSNotification *)notification {
if (YOUR_TASK_SUCCESS_VALUE == [[notification object] terminationStatus]) {
NSLog(@"Task succeeded.");
// Here you can add your checks on the creation on the files and user alerts confirmation
} else {
NSLog(@"Task failed.");
}
}
Не забудьте отписаться от уведомлений; в зависимости от того, где вы подписаны на уведомление, подходящим местом будет ваш dealloc
метод:
[[NSNotificationCenter defaultCenter] removeObserver:self];
Обновление: Вы ожидаете, что то, что задокументировано на Mac, будет работать так же на iOS, где это не документировано. Не очень удивлен, что это не работает.
Вы пытались выполнить задачу и использовать метод waitUntilExit
в фоновом потоке?
Если вам повезло, и это работает, не забудьте вернуться к основному потоку при отображении вашего UIAlert.