GeekBand Objective-C 集合类型

1. 数组

数组是一个有序的元素序列,其内部只能存放对象类型,对于基本数据类型需要用NSNumber包装成对象后存放,对于C语言的Struct类型,需要用NSValue包装对象后存放。
它的索引是从0开始,其索引大小大于数组长度时,会抛出索引越界运行时异常。

1.1 NSArray(固定数组)

NSArray具有常量性,其长度和元素均不能被更改。但元素对象指针指向的内容可以修改。
遍历方式:

    // for in 方式,最快的迭代方法
    for (MyPoint* p in arr) {
        NSLog(@"%p",p);
    }
    // 迭代器方式
    NSEnumerator* enumerator = [arr objectEnumerator];
    MyPoint* p = nil;
    while (p = [enumerator nextObject]) {
         NSLog(@"%@",[p description]);
    }
    // for 循环
    for (int i = 0; [arr count]; i++) {
        id p = [arr objectAtIndex:i];
        NSLog(@"%@",[p description]);
    }
1.2 NSMutableArray (可变数组)

NSMutableArray 是 NSArray的子类,可更改自身的长度、及元素。与NSMutableString 一样初始化指定一个capacity的值,为元素的数据。当长度增长时,会以capacity二倍的方式增长。
虽然它给我们提供了很多操作数组的方法,但是我们也应该尽量去避免使用insertObject 和 removeObject等这种会改变数序列的操作,因为涉及到大量的内存拷贝操作。

2. Set 集合

分为NSSet,NSMutableSet,前者不可变,后者可变。
Set是一个无序、无重复元素的集合。引用类型!
遍历的方式:Fash Enumeration和NS Enumerator。

3. Dictionary 字典

NSDictionary NSMutableDictinary(可变)
键 值对无序集合,key是唯一,value可重复
遍历的方式:Fash Enumeration和NS Enumerator

你可能感兴趣的:(GeekBand Objective-C 集合类型)