2016-05-17 8 views
0

Я хочу создать небольшое определение для моего проекта. Это определение должно просто выполнить код, если он выше версии ios. Похоже, этоВключите диагностику #pragma, игнорируемую в #define

#define IF_OS_8_OR_LATER(CODE) \ 
    if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) \ 
    { \ 
     CODE; \ 
    } 

Его довольно просто и работать для такого рода вещи

IF_OS_8_OR_LATER(_locationManager.allowsBackgroundLocationUpdates = YES); 

Но теперь я хочу, чтобы расширить это, чтобы избежать «не доступны в цели развертывания» предупреждение в моем IDE (AppCode). Я думал о том, чтобы распространить его на это

#define IF_OS_8_OR_LATER(CODE) \ 
_Pragma("clang diagnostic push") \ 
_Pragma("ide diagnostic ignored \"UnavailableInDeploymentTarget\"") \ 
    if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) \ 
    { \ 
     CODE; \ 
    } \ 
_Pragma("clang diagnostic pop") 

Но к сожалению, к сожалению. Любые предложения, как достичь этого?

ответ

-1
You should write like this: 

    #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_8_0 

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound)]; 
    #endif 

    Hope this helps you... 
0
  1. Если вам не нужно это предупреждение на всех (в других файлах также), вы можете просто отключить эту проверку в Preferences -> Проверки -> Objective-C -> Общие -> Использование API unuavailable для цели развертывания.

  2. Если вы хотите отключить это предупреждение для одного файла - вы можете поместить курсор на строку, нажать Alt + Enter (контекстное меню будет открыто), нажать клавишу «стрелка вправо» на клавиатуре или маленький треугольник на право выбора контекстного меню с помощью мыши - оно откроет контекстное меню с опцией «Подавление для файла». Вы можете выбрать этот вариант и вставить необходимые директивы.

  3. Если вы хотите сделать это вручную, следующий фрагмент кода должен работать для вас:

#pragma clang diagnostic push 
#pragma ide diagnostic ignored "UnavailableInDeploymentTarget" 
#define IF_OS_8_OR_LATER(CODE) \ 
    if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) \ 
    { \ 
     CODE; \ 
    } 
#pragma clang diagnostic pop 
+0

# 3 является один я хочу, но я хочу это в один сингл определяют как mentionend –

Смежные вопросы