我在使用ARC的应用中使用GData静态库。谷歌的说明是将图书馆的头文件链接到项目目标。
问题在于,当我这样做时,由于GData库与ARC不兼容,我收到编译器错误。
谷歌表示:ARC兼容性
当库源文件直接编译到使用ARC的项目中时,必须专门为库源禁用ARC。
要在Xcode 4中为源文件禁用ARC,请在Xcode中选择项目和目标。根据目标"构建阶段"选项卡,展开Compile Sources构建阶段,选择库源文件,然后按Enter打开编辑字段,并键入
-fno-objc-arc
作为这些文件的编译器标志。
但由于我只有头文件,所以我无法在app目标中使用此标志。
答案 0 :(得分:3)
好吧,我问了,10分钟后发现了衣服。无论如何它会帮助某人:
在头文件中搜索名为GDataDefines.h的文件 并在里面添加此代码:
//
// Simple macros to allow building headers for non-ARC files
// into ARC apps
//
#ifndef GDATA_REQUIRES_ARC
#if defined(__clang__)
#if __has_feature(objc_arc)
#define GDATA_REQUIRES_ARC 1
#endif
#endif
#endif
#if GDATA_REQUIRES_ARC
#define GDATA_UNSAFE_UNRETAINED __unsafe_unretained
#else
#define GDATA_UNSAFE_UNRETAINED
#endif
然后在导致ARC错误的GDataObject.h中
将GDataDescriptionRecord结构更改为
typedef struct GDataDescriptionRecord {
NSString GDATA_UNSAFE_UNRETAINED *label;
NSString GDATA_UNSAFE_UNRETAINED *keyPath;
GDataDescRecTypes reportType;
} GDataDescriptionRecord;
和
__weak GDataObject *parent_; // parent in tree of GData objects
到
GDataObject GDATA_UNSAFE_UNRETAINED *parent_;
这是google update的链接: http://code.google.com/p/gdata-objectivec-client/source/detail?r=712
就是这样。
希望它会帮助某人
沙尼