Objective-C(十二、快速枚举,枚举器NSEnumerator和集合类NSSet)——iOS开发基础
2015-07-04 15:27
393 查看
结合之前的学习笔记以及参考《Objective-C编程全解(第三版)》,对Objective-C知识点进行梳理总结。知识点一直在变,只是作为参考,以苹果官方文档为准~
十二、快速枚举,枚举器和集合类NSSet
注意:下面的所提及的方法都是常用方法,全部列出不大现实,参考Xcode帮助文档即可~
1、遍历、快速遍历
(1)普通遍历:
(2)快速遍历
快速遍历(快速枚举)语法
集合可以是可变集合也可以是不可变,但是可变集合在循环过程中不允许改变,否则会抛出异常
2、枚举器NSEnumerator
(1)基础知识:用来遍历集合类重元素对象的抽象类
(2)常用方法
array4还是前一篇章十一中的定义,由于前一篇篇幅过长,因此分来两部分。
output:
(3)与for…in语法结合
output:
3、NSSet(单值对象的集合)
(1)NSSet与NSArray的异同
共同点:都是集合,能存放多个OC对象,且只能存放OC对象
不同点:NSArray有序排列,NSSet元素无序列排列;NSArray可容纳重复的对象,NSset不能重复,重复时前者会被替换。
(2)
(3)常用方法
初始化
其他
(4)NSMutableSet常用方法
十二、快速枚举,枚举器和集合类NSSet
注意:下面的所提及的方法都是常用方法,全部列出不大现实,参考Xcode帮助文档即可~
1、遍历、快速遍历
(1)普通遍历:
for (NSUInteger i = 0; i < array.count; i++) { NSLog(@"%@", array[i]); }
(2)快速遍历
for (id obj in array) { NSLog(@"%@", obj); }
快速遍历(快速枚举)语法
for( 变量 in 集合 ) { 相应的处理 }
集合可以是可变集合也可以是不可变,但是可变集合在循环过程中不允许改变,否则会抛出异常
2、枚举器NSEnumerator
(1)基础知识:用来遍历集合类重元素对象的抽象类
(2)常用方法
- (id)nextObject; //一次遍历每个元素,结束返回nil,通常与while结合使用遍历所有项 - (NSArray *)allObjects; //返回集合中未被遍历的所有元素 - (NSEnumerator *)objectEnumerator; //顺序遍历的枚举其 - (NSEnumerator *)reverseObjectEnumerator; //逆序遍历的枚举器
array4还是前一篇章十一中的定义,由于前一篇篇幅过长,因此分来两部分。
NSEnumerator *enumerator = [array4 reverseObjectEnumerator]; id object; while ((object = [enumerator nextObject]) != nil) { NSLog(@"%@",object); }
output:
<MusicPlayer: 0x100406710> obj2 1
(3)与for…in语法结合
NSEnumerator *enumerator = [array4 reverseObjectEnumerator]; id object; for (object in enumerator) { NSLog(@"%@",object); }
output:
<MusicPlayer: 0x100106870> obj2 1
3、NSSet(单值对象的集合)
(1)NSSet与NSArray的异同
共同点:都是集合,能存放多个OC对象,且只能存放OC对象
不同点:NSArray有序排列,NSSet元素无序列排列;NSArray可容纳重复的对象,NSset不能重复,重复时前者会被替换。
(2)
(3)常用方法
初始化
+ (instancetype)set; + (instancetype)setWithObject:(id)object; - (instancetype)initWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION; - (instancetype)initWithArray:(NSArray *)array; //array中有重复,只保存一个
其他
- (NSUInteger)count; - (NSArray *)allObjects; //将集合对象中所有元素以数组形式返回 - (void)addObject:(id)object; //从集合中随机抽取一个元素 - (BOOL)containsObject:(id)anObject; - (BOOL)intersectsSet:(NSSet *)otherSet; //是否有共同的元素 - (BOOL)isEqualToSet:(NSSet *)otherSet; //两个集合是否相等 - (BOOL)isSubsetOfSet:(NSSet *)otherSet; //当前集合是否全部位于集合otherSet中
(4)NSMutableSet常用方法
- (void)addObject:(id)object; - (void)removeObject:(id)object; - (instancetype)initWithCapacity:(NSUInteger)numItems NS_DESIGNATED_INITIALIZER; - (void)unionSet:(NSSet *)otherSet; //合并另个集合 - (void)intersectSet:(NSSet *)otherSet; //生成另个集合的交集 - (void)minusSet:(NSSet *)otherSet; //从当前集合中删除同otherSet共同的元素
相关文章推荐
- Objective-C(十一、不可变数组NSArray,可变数组NSMutableArray)——iOS开发基础
- JsonArray和JsonObject的使用
- Swift与Objective-C混合编程
- Objective-C Json 使用
- Object
- Object-c 中的数据类型
- Objective-C精确的货币计算
- java中顶级父类Object
- 黑马程序员----继承2(接口、多态、object)
- mid range of objective seri
- object-c 之面向对象语法
- Objective-C 中便利初始化方法和指定初始化方法
- Objective-C 快速入门--基础(五)
- Objective-C 快速入门--基础(五)
- Objective-c学习三 控制台字符输入输出
- 正确定义Objective-C常量
- Objective-C(十、NSRange,point,size,rect,NSNumber,NSValue,NSNull)——iOS开发基础
- Objective C多态
- [Objective-C] .m文件不能编译C++代码的问题
- 所闻所获1:动画效果的进度球(水面上升、水面涌动)