我是 Java 程序员,我从 Obj-C 开始,在 java 中我可以创建一个具有确定类类型的可变数组,如下所示:
ArrayList<MyClass> list;
在 Obj-c 中我知道 NSMutableArray 但我不知道也没有找到如何确定类的类型。
有没有办法用它或其他没有 NSMutableArray 的类来做到这一点?
非常感谢。
我是 Java 程序员,我从 Obj-C 开始,在 java 中我可以创建一个具有确定类类型的可变数组,如下所示:
ArrayList<MyClass> list;
在 Obj-c 中我知道 NSMutableArray 但我不知道也没有找到如何确定类的类型。
有没有办法用它或其他没有 NSMutableArray 的类来做到这一点?
非常感谢。
不,Cocoa/Objective-C 不提供这样的类型化集合。集合中的所有对象都必须继承自NSObject
(这基本上是除了原语和结构之外的所有对象),但除此之外,由您来理解/管理数组中发生的事情。an 中的对象在NSMutableArray
其接口中由泛型类型表示id
。
从设计的角度来看,Cocoa 中的集合通常确实包含同质类型的对象。数组的名称通常用于指示其中的内容(就像在 Java 中一样),例如bookTitlesArray
或只是bookTitles
(即字符串)。此外,从抽象的角度来看,有时轻量级类用于“包装”原始NSMutableArray
数据以在接口处强制进行类型检查。例如,一个名为的新类BookTitleList
提供了添加、查找、删除方法的子集,并在验证后将它们传递给内部数组。但 YMMV 取决于您的需要。
尽管 Objective C 中没有类型参数,但您会发现它比 Java 中的麻烦要少得多,因为您不必向下转换即可调用方法。在这方面,Objective C 更像 JavaScript。