2012-03-27 3 views
2

私のプロジェクトではARCが使用されており、ARC互換ではないGDATA APIを使用したいと考えています。 私は単一ファイルのARCを無効にする方法を知っています(それらのファイルに-fno-objc-arcコンパイラフラグを追加することによって)。しかしGDataObject.hファイルにそれは.hファイルのARCを無効にするiphonesdk

私はこの問題を回避するにはどうすればよい
ARC forbids object in struct or union 

のようなエラーが発生し

typedef struct GDataDescriptionRecord { 
    NSString *label; 
    NSString *keyPath; 
    enum GDataDescRecTypes reportType; 
} GDataDescriptionRecord; 

などの構造defenitionがあります。 可能な任意のARC互換GDATA APIまたは.hファイル

ためにアークを無効にする方法はあります
+1

[GData静的ライブラリ - -fno-objc-arcを使用してARCからファイルを除外する](http://stackoverflow.com/questions/8300030/gdata-static-library-exclude-files-from-arc- with-fno-objc-arc) – zoul

答えて

6

私はこのようなものを使用します:

#if __has_feature(objc_arc) 
#define ARC_MEMBER __unsafe_unretained 
#else 
#define ARC_MEMBER 
#endif 

はその後、あなたの構造は次のようになります:

typedef struct GDataDescriptionRecord { 
    ARC_MEMBER NSString *label; 
    ARC_MEMBER NSString *keyPath; 
    enum GDataDescRecTypes reportType; 
} GDataDescriptionRecord; 
関連する問題