2016-05-17 7 views
0

私のプロジェクトに小さな定義をしたいのですが。その定義は、そのバージョンがiosバージョンの場合にのみコードを実行します。#defragに無視される#pragma診断をインクルードする

IF_OS_8_OR_LATER(_locationManager.allowsBackgroundLocationUpdates = YES); 

しかし、今は私が(私のIDEに警告「デプロイメント・ターゲットでは使用できません」を回避するために、これを拡張したい、この

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

その非常に簡単で、原料のこの種のために働くように見えます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. あなたは(他のファイル内の)すべてで、この警告を必要としない場合は、あなただけの環境設定で、この検査を無効にすることができます - >検査 - >のObjective-C - >一般 - > APIの使用方法デプロイメントターゲットには使用できません。

  2. 1つのファイルに対してこの警告を無効にするには、行にカーソルを置いて、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は、私が欲しいものですが、私は1つのmentionendとして定義してそれをしたいです –

関連する問題