Objective-C - 轻量级泛型可以包含多种类型吗?

时间:2016-01-06 03:16:27

标签: objective-c generics generic-programming

这个新语言功能在几年前就已经推出了iOS9,我知道它的基本用法。

@property (nonatomic, strong) NSArray<NSString *> *params;

但我想将params定义为

NSArray<NSString * or UIImage *>

,数组包含NSString *或UIImage *,是否可以明确定义?的typedef?

感谢所有提示!

2 个答案:

答案 0 :(得分:1)

我想你想看看__covariants。这是一个很好的帖子,谈论它们,特别是在评论部分。

http://drekka.ghost.io/objective-c-generics/

答案 1 :(得分:1)

我有一种感觉这是不可能的,因为编译器必须假设一个返回的对象可以是2个完全不同的类型然后不允许。我认为你能做的最好的事情可能是制作一些包含字符串和图像的容器对象或结构,你可以查询对象以查看它包含哪一个,然后使数组类型为容器类型。否则只使用没有泛型的旧NSArray,并确定从数组中检索它后的对象。