数组对象(1)

来源:互联网 发布:李小龙身材数据 编辑:程序博客网 时间:2024/04/29 08:56

Foundation数组是有序的对象的集合,常见的是一个数组中的元素都是一种特定类型,但这不是必须的。数组同样也存在可变数组和不可变数组,不可变数组是由NSArray类处理的,而可变数组是由NSMutableArray类处理的。后者是前者的子类,因此,后者继承了前者的方法。

下面一个程序介绍不可变数组:

#import <Foundation/Foundation.h>

int main ()

{

    @autoreleasepool {

        //创建一个数组包含月份的名称

        NSArray *monthName = [NSArrayarrayWithObjects:@"January",@"February",@"March", @"April",@"May",@"June", @"July",@"August",@"September", @"October",@"November",@"December", nil];

        //列出数组中所有的元素

        NSLog(@"Month    Name");

        NSLog(@"=====    ==== ");

        for (int i =0; i <12; ++i) {

            NSLog(@"%3i      %@",i+1,[monthNameobjectAtIndex: i]);

        }

    }

    return 0;

}

运行结果:

2014-08-25 17:23:45.423 testOC[2386:303] Month    Name

2014-08-25 17:23:45.424 testOC[2386:303] =====    ==== 

2014-08-25 17:23:45.425 testOC[2386:303]   1      January

2014-08-25 17:23:45.425 testOC[2386:303]   2      February

2014-08-25 17:23:45.426 testOC[2386:303]   3      March

2014-08-25 17:23:45.426 testOC[2386:303]   4      April

2014-08-25 17:23:45.426 testOC[2386:303]   5      May

2014-08-25 17:23:45.427 testOC[2386:303]   6      June

2014-08-25 17:23:45.427 testOC[2386:303]   7      July

2014-08-25 17:23:45.427 testOC[2386:303]   8      August

2014-08-25 17:23:45.428 testOC[2386:303]   9      September

2014-08-25 17:23:45.428 testOC[2386:303]  10      October

2014-08-25 17:23:45.428 testOC[2386:303]  11      November

2014-08-25 17:23:45.429 testOC[2386:303]  12      December

Program ended with exit code: 0

类方法arrayWithObjects:使用一列对象作为元素创建数组。这种情况下,需要按顺序列出对象并使用逗号隔开。这种方法使用的特殊语法可以接受可变数量的参数。但需要记住参数数组的结束,将这个数组的最后一个值指定为nil,它实际上并不会储存在数组中。

使用objectAtIndex:方法需要索引数检索数组中的元素。

下面是一个程序介绍可变数组:

#import <Foundation/Foundation.h>

int main ()

{

    @autoreleasepool {

        NSMutableArray *number = [NSMutableArrayarray];

        NSNumber  *myNumber;

        int i;

        //创建09数字的数组

        for (i = 0; i <10; ++i) {

            myNumber = [NSNumber numberWithInteger: i];

            [number addObject: myNumber];

        }

        //遍历数组与显示其值

        for (i = 0; i <10; ++i) {

            myNumber = [number objectAtIndex: i];

            NSLog(@"%@",myNumber);

        }

        //使用带有%@格式的NSLog显示

        NSLog(@"====== Using a single NSLog");

        NSLog(@"%@",number);

        

    }

    return 0;

}

运行结果:

2014-08-25 22:29:15.458 testOC[507:303] 0

2014-08-25 22:29:15.460 testOC[507:303] 1

2014-08-25 22:29:15.460 testOC[507:303] 2

2014-08-25 22:29:15.461 testOC[507:303] 3

2014-08-25 22:29:15.461 testOC[507:303] 4

2014-08-25 22:29:15.461 testOC[507:303] 5

2014-08-25 22:29:15.462 testOC[507:303] 6

2014-08-25 22:29:15.462 testOC[507:303] 7

2014-08-25 22:29:15.462 testOC[507:303] 8

2014-08-25 22:29:15.463 testOC[507:303] 9

2014-08-25 22:29:15.463 testOC[507:303] ====== Using a single NSLog

2014-08-25 22:29:15.464 testOC[507:303] (

    0,

    1,

    2,

    3,

    4,

    5,

    6,

    7,

    8,

    9

)

Program ended with exit code: 0

使用NSMutableArray的方法array创建一个空的可变的数组对象。数组元素并未指定并且可以根据需要增长,并且不能将整数这样的基本数据类型存储在数组之类的集合中。

使用方法addObject:会在数组的末尾添加一个对象。

代码的最后,使用单个NSLog格式化%@显示整个数组。对于数组中的每一个元素,NSLog将会使用属于每个元素类的description方法。如果使用的是从NSObject对象继承的默认方法,获取到的是对象的类和地址。然而,在这个例子中,能够获取到更有意义的内容,说明NSNumber类自定义的description方法实现。

0 0
原创粉丝点击