代码之家  ›  专栏  ›  技术社区  ›  Itachi

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

  •  0
  • Itachi  · 技术社区  · 9 年前

    这项新的语言功能是几天前iOS9附带的,我知道基本用法。

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

    但我想将参数定义为

    NSArray<NSString * or UIImage *>
    

    ,数组包含NSString*或UIImage*,是否可以显式定义?typedef?

    谢谢所有的提示!

    2 回复  |  直到 9 年前
        1
  •  1
  •   Fonix    9 年前

    我觉得这是不可能的,因为编译器必须假设返回的对象可以是两种完全不同的类型,这是不允许的。我认为你能做的最好的事情就是创建某种容器对象或结构,它包含一个字符串和图像,你可以查询对象,看看它包含的是哪一个,然后让数组类型为容器类型。否则,只需使用不带泛型的旧NSArray,并在从数组中检索到它之后确定它是什么对象。

        2
  •  1
  •   Seslyn    9 年前

    我想你应该研究_协变。这里有一篇关于他们的文章,特别是在评论部分。

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