【问题标题】:Objective C generics - Conditional compilationObjective C 泛型 - 条件编译
【发布时间】:2026-01-26 20:10:01
【问题描述】:

在使用 Xcode 7 编译但也可以在 Xcode 6 上编译时,编写利用泛型的代码的最简单方法是什么?

我猜想某种预处理器技巧可以完成这项工作,可能是这样的:

#define XCODE7_ONLY(x) ...

NSDictionary XCODE7_ONLY(<NSString*, NSString*>)* dictionary;

【问题讨论】:

  • 我很好奇.. 你为什么要这样做?很快您将只能使用 Xcode 7 提交应用程序。
  • 我想通过使用 Base SDK 10.9 编译我的应用程序在 10.9 上运行。
  • 您可能想考虑这是否真的会改进代码,是否存在将不正确的对象添加到字典中的问题?并不是说添加的类型信息是一件坏事。

标签: objective-c xcode generics c-preprocessor xcode7


【解决方案1】:

您可以使用 __has_feature(objc_generics) 宏来测试 Obj-C 泛型。所以你可能想试试:

#if __has_feature(objc_generics)
#define XCODE7_ONLY(...) __VA_ARGS__
#else
#define XCODE7_ONLY(...)
#endif

【讨论】: