GData静态库:使用-fno-objc-arc从ARC中排除文件?

我有一个问题,我只是无法解决如何解决:

我在我的应用程序中使用ARC的GData静态库。 Google的说明是将图书馆的头文件链接到项目目标。

问题是,当我这样做时,我得到编译器错误,因为GData库与ARC不兼容。

谷歌声明:

ARC兼容性

当库源文件直接编译到使用ARC的项目中时,必须专门为库源禁用ARC。

要在Xcode 4中禁用源文件的ARC,请在Xcode中选择项目和目标。 在目标“Build Phases”选项卡下,展开Compile Sources构建阶段,选择库源文件,然后按Enter打开编辑字段,并键入-fno-objc-arc作为这些文件的编译器标志。

但由于我只有头文件,我无法在app目标中使用此标志。

有什么建议么?

我为此编写了一个简单的可重用标头,可以将其粘贴到源文件的顶部或作为独立的头文件包含在项目中:

https://gist.github.com/1563325

好吧,我问了,10分钟后发现了衣服。 无论如何它会帮助某人:

  1. 问题仅在于.h文件,Goole备注仅适用于您将库嵌入而不是静态库的情况。
  2. 有人向谷歌报告问题后,他们添加了解决问题的新宏,这是如何:

在头文件中搜索名为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_; 

这是谷歌更新的链接: http : //code.google.com/p/gdata-objectivec-client/source/detail?r = 712

而已。

希望它会帮助某人

沙尼