我想知道Objective-C是否支持Lists
?或者...... NSMutableArray
是一种方法,而不是?
答案 0 :(得分:23)
是的NSMutableArray
(Mac,iOS)在大多数情况下都是适当的列表类(NSArray
是不可变的对应项)。
与Java的集合类相反 Objective-C (或更确切地说是 Foundation )数组是完全隐藏其实现的不透明类集群。
修改: 剪辑 (请参阅 orange80 的评论)
虽然Java有很多集合类,例如:
HashSet
TreeSet
LinkedHashSet
ArrayList
LinkedList
PriorityQueue
HashMap
TreeMap
LinkedHashMap
WeakHashMap
IdentityHashMap
CopyOnWriteArrayList
CopyOnWriteArraySet
EnumSet
EnumMap
ConcurrentLinkedQueue
LinkedBlockingQueue
ArrayBlockingQueue
PriorityBlockingQueue
DelayQueue
SynchronousQueue
ConcurrentHashMap
Objective-C(实际上,基础 SDK)仅提供非常有限数量的集合类:
CFMutableDictionary
CFMutableBag
CFMutableBitVector
CFMutableSet
CFMutableArray
CFBinaryHeap
CFMutableTree
或优选其NS等价物:
NSMutableDictionary
NSDictionary
NSMutableSet
NSSet
NSCountedSet
NSMutableArray
NSArray
为了全面了解此事,我建议您阅读: http://ridiculousfish.com/blog/posts/array.html(作者是Apple基金会团队的成员)
答案 1 :(得分:2)
一般来说,您需要使用NSMutableArray
来表示等效行为(尽管实现方式非常不同。)您还可以选择使用CFMutableArray
(基于C的API,即比NSMutableArray
更灵活,并且可以免费使用它。)如果你使用C ++而不是(或除了)Objective-C,你有任何STL集合类型(例如{{ 1}},std::list<T>
等)其适用性取决于您的确切用例。