我在使用ARC的应用程序中使用GData静态库。 Google的指令说将头文件从库链接到项目目标。
问题是当我这样做时,由于GData库与ARC不兼容,我遇到了编译器错误。
Google声明:
ARC相容性
将库源文件直接编译到使用ARC的项目中时,必须专门针对库源禁用ARC。
要为Xcode 4中的源文件禁用ARC,请在Xcode中选择项目和目标。在目标“构建阶段”选项卡下,展开“编译源”构建阶段,选择库源文件,然后按Enter打开编辑字段,然后键入-fno-objc-arc
作为这些文件的编译器标志。
(reference)
但是由于我只有头文件,因此无法在应用程序目标中使用此标志。
最佳答案
好吧,我问了一下,发现它在十分钟后就消失了。任何可以帮助某人的方法:
在头文件中搜索名为: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
然后在GDataObject.h中导致ARC错误
将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更新的链接:
http://code.google.com/p/gdata-objectivec-client/source/detail?r=712
而已。
希望对别人有帮助
香妮
关于ios - GData静态库:使用-fno-objc-arc从ARC排除文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8300030/