• NSArray


    定义一个NSArray对象

    NSArray *array = [[NSArray alloc] initWithObjects:@"apple", @"banana", @"pear", nil];
    

    NSArray *array1 = [NSArray arrayWithObjects:@"C", @"C++", @"Java", nil];
    

    NSArray对象的最后一个“元素”必须为nil,但它只是作为数组结束的标志(便于使用NSEnumerator等工具来遍历),既不会算入数组的长度,也不会被输出。

    NSArray常用方法

    • 用一个数组初始化另一个数组:
    NSArray *array2 = [[NSArray alloc] initWithArray:array1];
    

    NSArray *array3 = [NSArray arrayWithArray:array1];
    

    这两种方法都属于深拷贝,但后者创建的拷贝具有自动释放的特性,即用户不持有这个对象,也无需手动释放它,系统会自动择机释放这个对象的内存。

    • 在一个数组的尾部添加一个新的元素,来初始化一个新的数组:
    NSArray *array4 = [array1 arrayByAddingObject:@"Swift"];
    
    • 从一个数组种截取自定义范围的所有元素,来初始化一个新的数组(需要使用NSRange范围类):
    NSRange range = NSMakeRange(1, 2);
    NSArray *array5 = [array4 subarrayWithRange:range];
    
    • 用直接赋值的方式初始化一个数组:
    NSArray *array6 = @[@"apple", @"banana", @"peer"];
    

    这种方式不需要在数组最后添加nil

    • 获得数组的长度(元素个数),返回的是NSUInteger类型:
    int count = [array5 count];
    
    • 获得数组位于指定索引值处的元素:
    id i = [array5 objectAtIndex:3];
    

    id是OC中一种通用的对象类型,它可以指向任意类型的OC对象,大概相当于C中的void *或C++的auto智能指针

    • 获得数组的第一个和最后一个元素:
    id first = [array firstObject];
    id last = [array lastObject];
    
    • 判断数组中是否包含一个元素,返回布尔值:
    BOOL b = [array containsObject:@"apple"];
    
    • 获得一个元素在数组中的索引位置,返回值也是NSUInteger类型:
    unsigned int p = [array indexOfObject:@"banana"];
    
    • 遍历输出数组元素,除了array[index],还可以使用for-in语句:
    for (NSString *element in array5){
        printf("%s ", [element UTF8String]); 
    }
    
    • 使用枚举器输出数组元素:
    NSEnumerator *e = [array5 objectEnumerator];
    id enumerator;
    while (enumerator = e.nextObject) {
        NSLog(@"%@ ", enumerator);
    }
    
    • 通过枚举和闭包语句相结合的方式遍历数组:
    [array enumerateObjectsUsingBlock:^(id str, NSUInteger index, BOOL *te) {
        NSLog(@"%@, %d ", str, index);
    }];
    

    也可以反向:

    [array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id str, NSUInteger index, BOOL *te) {
        NSLog(@"%@, %d ", str, index);
    }];
    
    • 以指定字符为分隔符,将字符串分隔成由若干元素组成的数组:
    NSString *string = @"cat,dog,fish";
    NSArray *str2Arr = [string componentsSeparatedByString:@","];
    NSLog(@"%@", str2Arr);
    

    输出如下:

    OCPractice[2321:60059] (
        cat,
        dog,
        fish
    )
    
    • 将数组转换为字符串:
    NSString *string1 = [array componentsJoinedByString:@"-"];
    NSLog(string1);
    

    输出如下:

    OCPractice[2392:62176] apple-banana-pear
    

    附加:经测试在AppCode中写代码,用Java/C++的方式(点运算符)来调用OC对象方法,编辑器也会给出代码提示和自动补全,并自动转换为OC的语法格式(然而Xcode不支持),JetBrains牛逼!

  • 相关阅读:
    1-5概率的公理化的定义
    1-4几何概型
    1-3古典概型
    求逆序对数量
    1-2事件的基本运算
    1001 害死人不偿命的(3n+1)猜想 (15 分)
    北京周末去哪儿 —— 国家博物馆
    北京周末去哪儿 —— 天安门广场
    angular中使用ckplayer播放器
    java MD5/AES/DES加解密汇总
  • 原文地址:https://www.cnblogs.com/ybn-juan/p/12295649.html
Copyright © 2020-2023  润新知