Objective-C集合

Objective-C的集合都是Cocoa 或者Cocoa Touch类。


NSArray

可以存储不同类型的对象,从零开始标号,有序数组。

1. 新建

构造方法[NSArray arrayWithObjects:someObject, someString, someNumber,……,nil]
主要注意,最后要添加一个nil表示结束
使用字面量的话,不需要加nil
NSArray *someArray = @[firstObject, secondObject, thirdObject];
如果确实要在集合中存储一个nil,用NSNULL的对象来表示,其初始化方法就是
[NSNull null],相当于Java中的null

2. 访问

对象方法count返回集合中的元素个数
对象方法containsObject:someString可以查是否含有某字符串
像C语言数组一样的下标也可以用:比如有NSArray *something,可以有something[5]
其他方法见文档

3. 排序

对象方法(1)

- (NSArray *)sortedArrayUsingSelector:(SEL)comparator;

例子
NSArray *unsortedStrings = @[@"gammaString", @"alphaString", @"betaString"];
NSArray *sortedStrings = [unsortedStrings sortedArrayUsingSelector:@selector(compare:)];
解释

这里也可以看到,NSArray也是不可变的,排序不能在原数组上进行,只能产生一个新的数组。就算是使用NSMutableArray也是一样的,因为它并没有重写其父类NSArray中的排序方法,在使用时调用的始终是其父类NSArray的排序方法。
这个方法可以让数组中的每个对象调用compare:方法,而方法的参数就是下一个对象,也就是说,这个compare:方法是实现了当前对象和下一个对象的比较,由此可以猜测这个排序方法的逻辑思路有可能就是冒泡排序法。这里@selector(someFunction:)会在数组元素的类定义中寻找方法someFunction,并且返回该方法的id(以上例子中,NSString类就实现了compare:方法&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值