我的项目使用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文件的弧
答案 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;