zoukankan      html  css  js  c++  java
  • 数组对象(NSArray和NSMutableArrray)

    Objective-C中除了可以使用C中的基本数组外,如int[5],char word[] ={‘a’,'b’,'c’};Foundation还提供了NSArray类.Foundation是有序的对象集合.NSArray保存的对象可以是 不同的对象。但只能保存对象,int ,char,double等基本数据类型不能直接保存,需要通过转换成对象才能加入数组。例如下面的代码在运行时会报错:

    NSArray *arrs = [[NSArray alloc]initWithObjects:@”abc”,@”123″,456,nil];

    就 像NSString和NSMutableString一样,同样也存在可变数组和不可变数组.不可变数组是由NSArray类处理的,而可变数组则是由 NSMutableArrray处理的.后者是前者的子类,也就是说NSMutableArrray继承了NSArray的方法.

    NSArray 不可变数组

    使用NSArray关键字创建一个不可变的数组,一旦初始化完毕后这个数组的元素是不可以在动态的添加与删除。

    NSArray的类方法arrayWithObjects:使用一列对象作为元素创建数组,这种情况下需要按顺序列出对象并使用逗号隔开.将这个数组的最后一个值指定为nil,标记参数数组的结束.它实际上并不会存储在数组中.

    [array count] : 得到这个数组对象的长度。
    [array objectAtIndex index]: 传入数组的索引(index) 得到数据对象。
    [arrayWithObjects: ...] :向数组对象初始化赋值。这里可以写任意对象的指针,结尾必须使用nil,以标志结束.

    上面我们使用了两种方法遍历数组中的元素,第一种方式比较普遍,但是效率不好 ,推荐使用第二种方式.

    +(id)arrayWithObjects:obj1,obj2,…nil 创建一个新的数组,obj1,obj2……是他的元素对象,以nil对象结尾
    -(BOOL)containsObject:obj 确定数组中是否包含对象obj
    -(NSUInteger)count 返回数组元素个数
    -(NSUInteger)indexOfObject:obj 第一个包含obj元素的索引号
    -(id)objectAtIndex;i 返回存储在位置 i 的对象
    -(void)makeObjectsPerformSelector:(SEL)selector 将 selector 只是的消息发送给数组中的每个元素
    -(NSArray*)sortedArrayUsingSelector:(SEL)selector 根据selector 指示的比较方法对数组进行排序
    -(BOOL)writeToFile:path atomically:(BOOL)flag 将数组写入指定的文件中,如果 flag 为 YES,则需要先创建一个临时文件
    MSMutableArray可变数组

    大多时候我们需要动态的增加和删除数组中的元素,这就需要使用MSMutableArray.

    NSMutableArray类常用方法

    array 创建一个空数组
    +(id)arrayWithCapacity:size 创建一个数组,指定容量为size
    -(id)initWithCapacity:size 初始化一个新分配的数组,指定容量为size
    -(void)addObject:obj 将对象obj添加到数组末尾
    -(void)insertObject:obj atIndex:i 将对象 obj 插入到索引为 i 的位置
    -(void)replaceObject:obj atIndex:i 将数组中索引为 i 处的元素用obj 置换
    -(void)removeObject:obj 从数组中删除所有是 obj 的对象
    -(void)removeObjectAtIndex:i 从数组中删除索引为 i 的对像
    -(void)sortUsingSelector:(SEL)selector 用 selector 只是的比较方法将数组排序
    Objective-C的新特性之Object Literals

    在 苹果WWDC2012大会上介绍了大量Objective-C的新特性,其中有一点就是Object Literals,它允许你方便地定义数字、数组和字典对象。这个功能类似于java5提供的auto boxing功能。这虽然是一个语法糖,但对提高写代码效率帮助很大。

    更多关于Objective-C的新特性请查看:Objective-C新特性.

    为了方便你的旧代码迁移到新的写法,xcode专门还提供了转换工具,在Xcode中,选择 Edit -> Refactor -> Convert to Modern Objective-C Syntax即可。如下所示:

    Convert to Modern Objective-C Syntax

    然后就会自动帮我们转换成新的语法:

    Convert to Modern Objective-C Syntax2

  • 相关阅读:
    H5版俄罗斯方块(5)---需求演进和产品迭代
    vim 常用 NERDTree 快捷键
    C和C++中include 搜索路径的一般形式以及gcc搜索头文件的路径
    MySQL复制协议
    深入解析MySQL replication协议
    Install CodeBlocks in CentOS 7
    Impala 源码分析-FE
    Elasticsearch 6.x 的分页查询数据
    1、树莓派3B开箱+安装系统
    Python创建ES索引
  • 原文地址:https://www.cnblogs.com/lisa090818/p/3311866.html
Copyright © 2011-2022 走看看