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

2023-12-15

我在使用 ARC 的应用程序中使用 GData 静态库。谷歌的说明说将头文件从库链接到项目目标。

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

谷歌声明:

弧兼容性

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

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

(参考)

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


嗯,我问了一下,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

然后在导致 ARC 错误的 GDataObject.h 中

将 GDataDescriptionRecord 结构更改为

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

And the

   __weak GDataObject *parent_;  // parent in tree of GData objects

to

   GDataObject GDATA_UNSAFE_UNRETAINED *parent_;

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

就是这样。

希望它能帮助别人

Shani

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 使用 hooks 进行两次 React 渲染

    为什么我的组件渲染两次 export default function App console log asd const count setCount useState 0 return div div
  • 签出 origin/ 时如何知道我在 git 上的哪个分支

    我们有一个实际上可以做到的脚本git fetch git checkout origin
  • ShellExecute:动词“runas”不适用于路径中带有空格的批处理文件

    我正在使用 ShellExecuteW 启动批处理文件 代码看起来有点像这样 ShellExecuteW GetDesktopWindow wide verb c str wide filename c str wide parameter
  • 在C代码中表示EOF?

    换行符表示为 n 在C代码中 是否有与文件结束符 EOF 等效的字符 EOF 不是一个字符 在大多数现代操作系统中 它只是到达流末尾时应用于文件流的一个条件 之所以会出现混乱 是因为用户可能signalEOF 用于通过键入特殊字符进行控制台
  • 取消全局 CBT 挂钩后从所有进程卸载 DLL

    当加载 DLL 的系统范围挂钩被卸载时 如何从所有进程中正确卸载 DLL From MSDN 您可以释放全局钩子 程序通过使用 取消挂钩WindowsHookEx 但这个功能 不释放包含以下内容的 DLL 钩子程序 这是因为全球 钩子过程被
  • IndexError:使用 for 循环“弹出索引超出范围”

    我该如何解决这个问题IndexError 我尝试使用while循环 但没有任何改变 这是我的代码 它应该检查两个列表的对象的长度 la lb 并从中删除字符串la如果字符串短于lb字符串 反之亦然 另外 如果两个字符串的长度相同 则必须删除
  • 如何防止MSIL运行时注入? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 正如这里所见程序化 MSIL 注入或这里http www codeproject com Articles 463508 NET CLR Injection Modify IL
  • 如何在R闪亮字符串中插入新行

    在闪亮的 我有以下内容 output sequenceText lt renderText showSequence showSequence lt reactive selectedSeqs lt as numeric input seq
  • jQuery“可见”并不适用于所有浏览器,但适用于 Firefox

    我做了一个非常简单的小提琴here 并且可以在不同的浏览器中查看 它仅适用于 Firefox 换句话说 似乎 select tag id option visible 在其他浏览器中不起作用 怎么了 这是一个 jQuery 错误吗 代码是
  • 具有刚性变量的数组

    好吧 我正在做一个问题 其中我使用的函数有一个刚性变量 我想到了使用数组来解决这个问题 所以我想到使用与我创建的函数具有相同刚性变量的数组 但我不知道如何使用刚性变量创建数组 我尝试了以下操作但没有效果 rearrange Int gt a
  • Exec 命令未按预期工作

    我正在尝试从 PHP 脚本启动 CLI 命令 特别是我想使用这个命令convert a png a tif将图像转换为 tiff 当我从 CLI 启动此命令时 它会按预期工作 但如果我使用以下代码从 PHP 脚本启动 它不会在我的文件夹中创
  • Javascript 全局变量没有更新

    我正在制作这个网站 我想从另一个函数更新全局变量 全局变量i初始化为 0 我创建了 2 个函数 第一个用于更新全局变量并通过警报显示新值 第二个函数仅警报更新后的全局变量的新值 现在的问题是 当我调用第一个函数时 它会提醒新的更新值 但是当
  • Wagtail 单元测试:添加子页面将它们转换为基本类型

    尝试为 Wagtail 创建一些单元测试并遇到以下问题 gt gt root FrontPage add root instance FrontPageFactory build gt gt root
  • 使用 LINQ 进行多重排序[重复]

    这个问题在这里已经有答案了 我从一个基本类开始 我想使用 LINQ 在列表中操作它 如下所示 public class FooBar public virtual int Id get set public virtual string F
  • Delphi 7 - 如何使用输入框

    我正在编写一个程序 您必须在输入框中输入密码才能访问该程序的最小功能 但是 如果您单击输入框中的 取消 我的程序会出现错误消息 所以我想知道是否有人知道我如何才能做到这一点 因为通过 Messagedlg 我知道你使用 IF 但是我怎样才能
  • 在 WCF 中实现 JSON-RPC

    我一直在四处寻找 但没有找到解决方案 我想用 WCF 实现一个 JSON RPC 服务器 我找到了这个http jsonrpc2 codeplex com 但它不使用 WCF 我知道如何集成它 有人可以给我一个关于如何将所有东西组合在一起的
  • 区分不同类型的 MIFARE Ultralight

    如何识别不同类型的MIFARE Ultralight标签 在文档中AN10834Ultralight 和 Ultralight C 的不同之处在于 Auth 的答案 这个 验证 是什么 芯片的datasheet中没有对该功能的描述 我注意到
  • AOSP - 错误:覆盖目标 (...) 的命令,先前在 (...) 定义

    我正在尝试为不支持的设备构建 AOSP surnia Moto E2 2015 LTE 我之前解决了很多问题 但现在我遇到了一个无法避免的问题 我看到很多人都有这个问题 但他们只是警告 我能做些什么 或者你能帮我找到 surnia 设备树
  • “char *var[3]”和“char var[3][15]”有什么区别?

    我对以下两种方式感到困惑 char var 3 15 Hello world good bad as known this is for an 2D array char var 3 Hello world good bad and thi
  • GData 静态库:使用 -fno-objc-arc 从 ARC 中排除文件?

    我在使用 ARC 的应用程序中使用 GData 静态库 谷歌的说明说将头文件从库链接到项目目标 问题是 当我这样做时 我会收到编译器错误 因为 GData 库与 ARC 不兼容 谷歌声明 弧兼容性 当库源文件直接编译到使用 ARC 的项目中