oc之数组定义

在objective c中,除了C的数组使用方法,Cocoa还为我们提供了一个NSArray类,使用该类可以简单方便的存储对象,该类同NSMutableString一样,还有一个子类,用于处理可变数组:NSMutableArray.类中的方法简单直了,很容易理解,下面只做一些简单的示范:

#import <Foundation/Foundation.h>

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        //数组可以一次性添加完全,以nil作为结尾标志。
        NSArray *array =[NSArray arrayWithObjects:@"DANCER",@"holy", nil];
        //如果要添加空的话可以用以下方法
        NSArray *array1=[NSArray arrayWithObjects:@"dancer",[NSNull null], nil];
        //同字符串一样,可以建立可变更的数组,并设置一个初始量。
        NSMutableArray *array2=[NSMutableArray arrayWithCapacity:50];
        //下面可以动态添加数组元素
        [array2 addObject:@"holy"];
        [array2 addObject:@"dancer"];
        [array2 addObject:@"hoho"];
        //合并字符串数组
        NSString *str = [array2 componentsJoinedByString:@"|"];
        NSLog(str);
        //字符串切割成数组
        NSArray *array3=[str componentsSeparatedByString:@"|"];
        NSLog(@"%@",array3);
        //可变数组元素删除
        [array2 removeObjectAtIndex:1];
        NSLog(@"%@",array2);
    }
    return 0;
}

NSArray可以放一切数据,除了C中的基本数据类型,C中的一些基本元素我们可以用NSNumber类来包装,类似java中的装箱,另外还有一些struct类型的数据我们也可以用NSNumber类的父类NSValue来进行包装,包装成NSValue的对象再将其放入数组中。具体使用方法看代码:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        NSMutableArray *array = [NSMutableArray arrayWithCapacity:50];
        int age=5;
        char c='c';
        float f=3.14;
        NSRect rect =NSMakeRect(1, 2, 3, 4);
        NSNumber *myAge = [NSNumber numberWithInt:age];
        NSNumber *myC = [NSNumber numberWithChar:c];
        NSNumber *myF= [NSNumber numberWithFloat:f];
        NSValue *value = [NSValue valueWithRect:rect];
        [array addObject:myAge];
        [array addObject:myC];
        [array addObject:myF];
        [array addObject:value];
        NSLog(@"%@",array);
    }
    return 0;
}

Cocoa提供了好几种方法进行数组的迭代,如上所示,我们直接用%@可以输出数组的详细信息,也可以使用以下方法将其元素分别取出:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        NSMutableArray *array = [NSMutableArray arrayWithCapacity:50];
        [array addObject:@"a"];
        [array addObject:@"b"];
        [array addObject:@"c"];
        [array addObject:@"d"];
        NSLog(@"%@",array);//以大括号形式输出数组内容
        //第一种迭代方法
        for(int i=0;i<[array count];i++)
        {
            NSLog(@"%@",[array objectAtIndex:i]);
        }
        //第二种迭代方法
        id ob;
        NSEnumerator *enumerator = [array objectEnumerator];//实现一个迭代器
        while(ob=[enumerator nextObject])
        {
            NSLog(@"%@",ob);
        }
        //第三种最简单的for in迭代方法
        id oc;
        for (oc in array) {
            NSLog(@"%@",oc);
        }
    }
    return 0;
}

本文转自holydancer的CSDN专栏:http://blog.csdn.net/holydancer/article/details/7346221

原文地址:https://www.cnblogs.com/songshu-yilia/p/3950770.html