Семантическая проблема - неявное объявление функции
Я использую Appirater ( https://github.com/arashpayan/appirater), чтобы включить оценки приложений в моем проекте xcode. Все работает нормально при использовании "Симулятора iOS", но когда я использую цель "iOS-устройство" для архивации своего проекта, я получаю 2 ошибки сборки:
Семантическая проблема: неявное объявление функции 'SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO' недопустимо в C99
Семантическая проблема: неявное объявление функции 'SYSTEM_VERSION_LESS_THAN' недопустимо в C99
Соответствующие строки кода находятся в файле Appirater.m:
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0") && SYSTEM_VERSION_LESS_THAN(@"7.1")) {
reviewURL = [templateReviewURLiOS7 stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%@", _appId]];
}
Я нашел набор макросов, которые очень похожи на эти, в Как проверить версию iOS?
Любая помощь будет оценена.
2 ответа
Добавьте эти строки из вашей ссылки в ваш файл.pch. Очистить и построить. Это должно уйти.
#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
Дополнительная информация: поскольку препроцессор не может найти их для поиска и замены этих макросов, они передаются компилятору, где они выглядят как функции C. Компилятор не может их найти и выдает ошибку.
ОБНОВЛЕНИЕ Пожалуйста, вытащите снова из репо. Это должно работать. Извини за это.
ОРИГИНАЛЬНЫЙ ОТВЕТ Это моя вина. Я принял новое изменение с этими макро-вызовами в репозиторий Appirater без сборки / тестирования. Теперь я удаляю оскорбительные макросы и исправлю их в течение часа.