使用 ARC 时的条件编译

2023-11-28

有没有办法询问编译器是否打开了 ARC,然后根据该值进行条件编译?例如,我有一个协议:

@protocol ProtocolA

@required
-(void)protocolMethodOne

@optional
-(void)protocolMethodTwo;

@end

如果我使用 ARC,我想做protocolMethodA使用 ARC 时可选,不使用 ARC 时必需。这是因为使用此方法的主要原因之一是释放对象实例。

话虽如此,这就是我希望发生的事情:

@protocol ProtocolA

#ifdef SOME_ARC_VARIABLE
    @optional
#else
    @required
#endif
-(void)protocolMethodOne

@optional
-(void)protocolMethodTwo;

@end

你应该做#if __has_feature(objc_arc)如果启用 ARC,该值将扩展为 1。

这是来自ARC docs来自铿锵。

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

使用 ARC 时的条件编译 的相关文章

随机推荐

  • 在什么情况下应该使用实例变量而不是其他变量类型?

    我正在使用 Ruby on Rails 3 我想知道在什么情况下应该使用实例变量而不是其他变量类型 以及是否存在安全原因 Example Using an instance variable accounts Account find Us
  • Windows 下 GNU C/C++ 的内存泄漏检测 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 哪些内存泄漏检测工具可用于 Windows 上的开源 C C 我一直在使用 VLD 视觉检漏仪 有时 它对于好的代码和更复杂的代码都效果很好 它并不完美
  • C# 中的批量更新

    为了在数据库中插入大量数据 我曾经将所有插入信息收集到一个列表中 并将该列表转换为DataTable 然后我通过以下方式将该列表插入数据库SqlBulkCopy 我将生成的列表发送到哪里LiMyList其中包含我要插入数据库的所有批量数据的
  • 删除数据帧行的简单方法对没有行匹配删除条件的实例具有鲁棒性

    R 中数据操作的一项常见任务是通过删除与特定条件匹配的行来对数据帧进行子集化 然而 在 R 中执行此操作的简单方法在逻辑上似乎不一致 对于没有经验的人 例如我自己 来说甚至是危险的 假设我们有一个数据框 我们想要排除属于 G1 处理的行 T
  • 适合特定宽度的字符串长度

    我确信我错过了一些明显的东西 我有一个我打算在其中绘制文本的区域 我知道它 区域 的高度和宽度 我想知道宽度可以容纳多少个字符 单词 最好是字符 第二个问题 如果该行太长 我想绘制第二条线 所以我想我还需要获取文本的高度 包括它认为正确的垂
  • AutoIt 类似于 Java 的 GUI 自动化工具 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要对我的模块插入的软件进行自动化 UI 测试 我无权访问主机的代码 所以我需要像 AutoIt 这样的东西 由于 AutoIt 不能与 Swin
  • ArraySegment 类有什么用?

    我刚刚遇到ArraySegment
  • 标记未出现在传单中的连续世界上

    当我设置选项时continuousWorld true标记不会显示在克隆图块上 仅显示在主世界上 这是设计好的行为吗 可能是其他选项 我没有注意到 来显示这些标记的存在 UPD My aim to repeat markers on eve
  • 如何使用python进行坐标仿射变换?第2部分

    我有与这里描述的相同的问题 如何使用python进行坐标仿射变换 我试图使用所描述的方法 但由于某些原因我会收到错误消息 我对代码所做的更改是替换主系统和辅助系统点 我通过使用不同的原点创建了辅助坐标点 在我正在研究这个主题的实际情况中 测
  • 在 gevent 中,如何转储所有正在运行的 greenlet 的堆栈跟踪?

    出于调试目的 我想迭代所有 greenlet 并获取它们的跟踪记录 如何使用 gevent 做到这一点 基本上 我想做的 gevent 相当于this 您可以使用gc模块迭代堆上的所有对象并搜索 greenlet Greenlets 将堆栈
  • 删除 Google Apps 脚本文档服务中的内容

    如何刷新 Google Apps 脚本文档服务中的文档 我是否需要循环遍历所有类型的元素 例如段落 图像 表格并在小时候删除它们 有没有更简单的方法来删除文档正文中的所有内容 谢谢你 根据文档 the Document setText应该可
  • 如何标准化图像颜色?

    在他们的论文中描述维奥拉 琼斯物体检测框架 Viola 和 Jones 提出的鲁棒实时人脸检测 据说 用于训练的所有示例子窗口均已标准化为方差 最大限度地减少不同照明条件的影响 我的问题是 他们使用什么样的工具来标准化图像 我不是在寻找 V
  • 无法将 Jinja2 模板包含到 Pyinstaller 分发中

    我有一个使用 Jinja2 模板的 python 脚本 我正在尝试使用 Pyinstaller 创建一个单文件夹发行版 在 Jinja 中 我让程序通过使用PackageLoader班级 下面的代码显示它指向我的templates下的文件夹
  • 使用 tSQLt 对 SSIS 包进行单元测试

    我真的很喜欢 tsqlt 来测试过程和函数 但真的希望能够执行 SSIS 包并利用 FakeTable 和 AssertEquals 来确定 SSIS 包是否做了它应该做的事情 有没有人探索过这条路径 是否可以通过 tsqlt 包装您的测试
  • 为列名添加前缀

    当阅读以下内容时helpfile应该可以在列名中添加前缀 colnames x do NULL TRUE prefix col 以下内容对我不起作用 我在这里做错了什么 m2 lt cbind 1 1 4 colnames m2 do NU
  • 使用 chrome.tabs 与 browser.tabs 实现浏览器兼容性

    我正在将 Chrome 扩展程序移植到 Firefox 根据 MDN 有一个浏览器选项卡chrome应该支持的API However browser不是 Chrome 稳定对象 同时chrome tabs在 Firefox 中工作得很好 更
  • rdtsc,循环次数过多

    include
  • CSS 显示属性上的转换

    我目前正在设计一个 CSS 大型下拉 菜单 基本上是一个常规的纯 CSS 下拉菜单 但包含不同类型的内容 眼下 CSS 3 过渡似乎不适用于 display 属性 也就是说 你不能从display none to display block
  • Android:如何使用非字符串选择参数查询 SQLiteDatabase?

    有没有直接查询的方法SQLiteDatabase选择参数不是String types 特别是 如果 arg 是byte type 我能找到的最接近的是SQLiteDatabase compileStatement 它返回一个SQLiteSt
  • 使用 ARC 时的条件编译

    有没有办法询问编译器是否打开了 ARC 然后根据该值进行条件编译 例如 我有一个协议 protocol ProtocolA required void protocolMethodOne optional void protocolMeth