• OC——Foundation—常用的类(2)----NSArray


    NSArray
    用来存储对象的有序列表,它是不可变的
    不能存储c语言中的基本数据类型,如int、float、enum、struct,也不能存储nil
    NSArray *array=[NSArray arrayWithObject:@“12345”];
    数组创建之后是不可变的,需要在创建的时候就初始化。
    当把一个对象塞进数组时,这个对象的计数器会加1.
     
    NSArray遍历
    • 普通遍历
            NSUInteger count = [array count];
            for (int i=0;i<count;i++){
                  id obj = [array objectAtIndex:i];
            }
    • 快速遍历
            for(id obj in array)
    • 迭代遍历器
    NSArray *array=[NSArray arrayWithObjects:@“123”,@“456”];
    //获取数组的迭代器,正序
    NSEnumerator @eunm=[array objectEnumerator];
    //获取下一个需要遍历的元素
    id obj =nil;
    while(obj=[enum nextObject]){
      NSLog(@“obj=%@“,obj);
    }

    反向迭代器:NSEnumerator *enum=[array reverseObjectEnumerator];

    • block遍历
            [array enumerateObjectsUsingBlock:^(id object,NSUInteger index,BOOL *stop){
                 NSLog(@“%@-%zi”,object,index);
            }]
    • 迭代器遍历:获取数组中所有元素   NSArray *array = [enumerator allObjects];
            allObjects 是取出没有被遍历过的对象
     
     
    NSArray派生出新的集合
    • -(NSArray *)arrayByAddingObject:(id)anObject
    添加一个元素,返回一个新的NSArray(方法调用者本身没有改变)
    • -(NSArray *)arrayByAddingObjectsFromArray:(NSArray *)otherArray
    添加otherArray的所有元素,返回一个新的NSArray(方法调用者本身没有改变)
    • -(NSArray *)subarrayWithRange:(NSRange)range
    截取range范围的数组元素
     
     
    NSArray其他方法
    • -(NSString *)componentsJoinedByString:(NSString *)separator
    用separator作拼接符将数组元素拼接成一个字符串
    • -(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile
    将一个NSArray持久化到文件中去
    如果要将一个文件的内容读取到数组中,文件内容必须遵守一定的格式
     
     
    NSMutableArray(可变数组)
    • 可变的NSArray,NSArray的子类,可以随意的添加或者删除元素
    • 创建NSMutableArray的方法
    NSMutableArray *array=[NSMutableArray arrayWithObject:@“1”];
    //添加元素
    [array addObject:@“2”];
    //删除元素
    [array removeObject:@“1”];
    //删除最后一个元素
    [array removeLastObject]
    //删除所有元素
    [array removeAllObjects];
            也可以使用创建NSArray的方法来创建NSMutableArray
    • 当一个元素被加到集合中时,会执行一次retain操作;当一个元素从集合中移除时,会执行一次release操作;当集合被销毁时(调用了dealloc),集合里的所有元素都会执行一次release操作(这个原则还适用于其他集合:NSIctionaryNSSet等)
     
    排序方法参考NSArray排序,排序所调用的方法返回值不同,可变数组,使用无返回值的方法,不可变数组使用带返回值的方法
     
     
  • 相关阅读:
    Classloader中loadClass()方法和Class.forName()区别
    java.lang.Class解析
    JDK_Proxy_InvocationHandler_动态代理
    spring之Annotation
    annotation之@Autowired、@Inject、@Resource三者区别
    spring之生命周期
    spring之lazy-init
    我是如何在SQLServer中处理每天四亿三千万记录的
    (转)SQL一次性插入大量数据
    SQL SERVER连接池
  • 原文地址:https://www.cnblogs.com/hqzxbb/p/4409652.html
Copyright © 2020-2023  润新知