通常,当我想用逗号分隔的字符串数据数组时,我这样做:
NSArray *array1 = [obj1 componentsSeparatedByString:@","];
但是有些程序员这样做了:
NSArray <NSString *>*array1 = [obj1 componentsSeparatedByString:@","];
两者都有效,但我想知道哪个更好,为什么。
答案 0 :(得分:3)
后一种语法是“轻量级通用”。这意味着当您处理此集合时,它知道您正在处理NSString *
个对象的集合。因此,它知道array1[0]
必须是NSString
。
通过执行此操作,如果您不小心使用的方法不是NSString
方法,则可能会收到编译器警告。您还可以享受更好的代码完成,只显示该类的方法和属性。此外,如果您正在处理可变数组,编译器可能会警告您是否添加了错误类型的对象。
在Objective-C中,底线,轻量级泛型不是必需的,但您只是利用编译器推断您预期与集合一起使用的类型的能力。它没有强制执行任何运行时强类型,就像你在Swift泛型中看到的那样(这就是为什么它被称为“轻量级”),但它提供了更有意义的编译时警告和代码完成。
有关详细信息,请参阅