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