禁用ARC for .h文件iphonesdk

时间:2012-03-27 18:11:31

标签: iphone automatic-ref-counting gdata-api

我的项目使用ARC,我想使用不兼容ARC的GDATA api。 我知道如何为单个文件禁用ARC(通过为这些文件添加-fno-objc-arc编译器标志)。但是在GDataObject.h文件中有一个结构防御

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

导致错误,如

ARC forbids object in struct or union

如何避免此问题。 是否有可用的ARC兼容GDATA api或以任何方式禁用.h文件的弧

1 个答案:

答案 0 :(得分: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;