在 Objective C 中选择加入泛型

Opt-in to Generics in Objective C

我想要这样的东西:

@property (nonatomic, nonnull, copy) NSArray <Route *> *routes;

但我需要支持 Xcode 的旧版本。使用指定的初始化程序,可以在编译器中进行查找以查看它是否受支持:

#if __has_attribute(objc_designated_initializer)

我做了一些挖掘,但找不到它们的定义位置,因为我想某处有一个用于轻量级泛型的地方。

我在 https://gist.github.com/smileyborg/d513754bc1cf41678054

内找到了它
#if __has_feature(objc_generics)
#   define __GENERICS(class, ...)      class<__VA_ARGS__>
#   define __GENERICS_TYPE(type)       type
#else
#   define __GENERICS(class, ...)      class
#   define __GENERICS_TYPE(type)       id
#endif