objective-C 数组二 "可变数组"

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //可变数组 NSMutableArray 它是NSArray的子类
        //初始化方法
        //初始化一个空间的可变数组
        NSMutableArray *mArray1 = [NSMutableArray array];
        
        //创建一个里面只有一个元素的可变数组
        NSMutableArray *mArray2 = [NSMutableArray arrayWithObject:@"1"];
        
        
        //创建一个里面有多个元素的可变数组
        NSMutableArray *mArray3 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];
        
        //根据另一个数组产生新的数组
        NSMutableArray *mArray4 = [NSMutableArray arrayWithArray:mArray3];
        
        
        //可变数组独有的初始化方法
        NSMutableArray *mArray5 = [NSMutableArray arrayWithCapacity:10];
        //数组的容量也只有数组最终大小的一个参考。容量数值之所以存在,是为了Cocoa能够对代码进行一些优化,Cocoa即不会将对象写入数组,也不会用该容量来限制数组的大小
        
        //从本地文件读取数组
        NSMutableArray *mArray6 = [NSMutableArray arrayWithContentsOfFile:@""];
        
        
        NSMutableArray *mArray7 = [NSMutableArray arrayWithContentsOfURL:[NSURL URLWithString:@""]];
        //NSLog(@"%@",mArray7);
        
        //
       
        
        
        
        //在数组的末尾增加一个元素
        [ mArray3 addObject:@"5"];
        
        //在数组指定的位置插入一个元素
        [mArray3 insertObject:@"Rick" atIndex:2];
        
        
        //替换
        [mArray3 replaceObjectAtIndex:2 withObject:@"Jack"];
        
        //交换 将数组指定位置上的两个元素交换位置
        [mArray3 exchangeObjectAtIndex:0 withObjectAtIndex:1];
        
        
        //删除指定元素
        [mArray3 removeObject:@"1"];
        
        
        //删除指定位置
        [mArray3 removeObjectAtIndex:2];
        
        //删除数组最后一个元素
        [mArray3 removeLastObject];
        
        //删除数组全部
        [mArray3 removeAllObjects];
        
        for (int i = 0; i < mArray3.count; i++) {
            NSLog(@"%@",mArray3[i]);
        }
        
        
        
        NSMutableArray *marray = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5" ,nil];
        //快速枚举
        for (NSString *element in marray) {
            NSLog(@"%@",element);
        }
        
        //使用系统提供的枚举类型 NSEnumerator
        NSEnumerator *enumerator = [marray objectEnumerator];
        //得到一个枚举器以后我们就可以通过while循环类遍历数组元素,而不用管理索引问题,每次循环可以通过枚举器的nextObject方法得到下一个数组里的对象
        
        id ele;
        while (ele = [enumerator nextObject]) {  //使用枚举器遍历
            NSLog(@"%@",ele);
             
             //
            [marray removeLastObject];
        }
        /*
         注意
         1.我们使用枚举器遍历数组元素期间,不要添加或者删除数组元素,否则运行的时候程序会崩溃
           因为通过objectEnumerator的枚举器的时候数组元素的个数已经记录在枚举器里了,在遍历的时候。如果添加或删除数组元素的话,数组元素的个数就前后不一致而出现异常
         */
        
        for (id obj in marray) {
            NSLog(@"%@",obj);
        }
        
    }
    return 0;
}

你可能感兴趣的:(objective-C 数组二 "可变数组")