Что вам не хватает, так это то, что getNotificationSettingsWithCompletionHandler
является асинхронным.
Это означает, что «ответ» в блоке (ваш settings.authorizationStatus
) возвращается к вам после завершен весь метод mCheckPermissions
, включая return
. Порядок выполнения таков:
+(UNAuthorizationStatus) mCheckPermissions {
__block UNAuthorizationStatus oOutput = 0;
/* 1 */ UNUserNotificationCenter* oCenter = [UNUserNotificationCenter currentNotificationCenter];
/* 2 */ [oCenter getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
/* 4 */ oOutput = settings.authorizationStatus;
}];
/* 3 */ return oOutput;
}
Поэтому невозможно вернуть из внешнего метода mCheckPermissions
значение, которое поступает в блок. (Если только у вас нет машины времени в вашем кармане, вы можете заглянуть в будущее и узнать, каков будет результат .)