Как только вы вернетесь с applicationWillTerminate
, система завершит ваш процесс, поэтому setAlternateIconName
может не успеть завершить sh.
У вас есть около 5 секунд, чтобы вернуться из этой функции, поэтому Я рекомендую вам использовать семафор, чтобы дождаться его.
Что-то вроде:
- (void)applicationWillTerminate:(UIApplication *)application
{
if ([application supportsAlternateIcons] == NO)
return;
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
[application setAlternateIconName:@"alternate"
completionHandler:^(NSError * _Nullable error) {
NSLog(@"%@", [error description]);
dispatch_semaphore_signal(semaphore);
}];
// Wait 3 seconds -- we have ~5 seconds to return
dispatch_time_t waitTime = dispatch_time(DISPATCH_TIME_NOW, 3.0 * NSEC_PER_SEC);
dispatch_semaphore_wait(semaphore, waitTime);
}