OC数组

数组:OC中容器类的一种,分为可变数组NSMUtableArray和不可变NSArray数组。NSMutableArray继承于NSArray,它们构成了OC的数组。

1、数组存放oc中任意对象类型

2、存放到数组中的对象是有顺序的,并且每个对象都有唯一的标识符,索引值。索引值从0开始,是无符整型,无符即没有负数。NSUInteger

一、NSArray 对象只能被查看不能增删改

1、NSArray的创建

 NSArray   *array = [[NSArray alloc] initWithObjects:@"AA",@"BB",@"CC",@"Helloworld", nil];

 NSArray  * array1 = [NSArrayarrayWithObjects:@"1",@"2",@"3",@"4", nil];

//用对象初始化

//oc的数组不是真正的数组,是一个链表,nil的作用表示结尾。

2、NSArray的遍历打印

在C语言中,打印一个数组,需要for循环输出,在OC中我们直接 NSLog(@"%@",array);就可以输出数组中所有的对象。

(

    AA,

    BB,

    CC,

    "Hello world"

)

//打印出来自动加花括号,表明输出的是一个数组,多个单词会加双引号

当然也可以用C语言的方式给它遍历输出

for(int i = 0; i

  NSString *str = [arrayobjectAtIndex:i];//使用i的值作为索引值

       NSLog(@"'%@",str);

}

3、根据索引值查看数组中的对象  从数组中去一个元素时要retain,因为数组可能是可变的,其他时候可能执行了delete等操作,使该对象无法引用,使用完时,同样要release。

NSArray* arr =[[array objectAtIndex:1]retain];

NSLog(@"%@",arr);

//取数组中索引值为1的对象

4、根据对象查看索引值(这个我至今没有用到)

NSUInteger  *value = [arrayindexOfObject:@"AA"];

NSLog(@"%ld",value);

5、遍历的作用(别的博客看到现在摘录过来 )

(1)枚举器法

NSEnumerator * enumerator = [arrayObjectEnumerator];//数组对象创建一个枚举器id obj;//创建一个id类型的对象while(obj=[enumerator nextObject]) {NSLog(@"%@",obj);

}

枚举器法可以实现逆序遍历,这是快速枚举法不可替代的。

NSEnumerator * enumerator = [arrayreverseObjectEnumerator];除了创建枚举器,别的地方都与正序无区别。

(2)快速枚举法(数组的快速遍历)相比枚举器法的遍历 这种方式更加简洁

for(id obj in array){

NSLog(@"%@",obj

);//循环的第一次,obj是结点0的地址,第二次是结点1的地址。


二、NSMutableArray 不可变数组,使用率比NSArray高。

 创建创建时可以添加对象,也可以不加。

  NSMutableArray  *arr =[[NSMutableArray alloc] init];

  NSMutableArray  *arr1 =[NSMutableArray alloc]initWithObjects:@"",@"", nil];

1 增

  (1)add    [arr addObject:@"Tom"];//追加

(2)insert   [arrinsertObject:@"卡特琳娜"atIndex:1];//在索引值位置插入对象

2 改

    [arr replaceObjectAtIndex:3 withObject:@""];//替换

    [arr exchangeObjectAtIndex:0 withObjectAtIndex:3];//根据索引值 将两个对象的位置交换


3 删

    [arr  removeAllObjects];全删

    [arr removeLastObject];删除最后一个

    [arr removeObject:@""];//删除具体的对象

    [arr removeObjectAtIndex:1];根据索引值删除(删除索引值位置的对象)


4 查和不可变数组一样

最后注意点:

1、如果是全局变量,在下面一定能够要初始化初始化而且用alloc,因为要内存管理起来比较方便。

2、数组取名,不要太像,否则智能提示,一不小心写成一样的,那真真是崩溃啊。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值