OC学习笔记15--Foundation之NSArray与NSMutableArray常用方法

#import <Foundation/Foundation.h>


int main()
{
	NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
	//数组几种创建方式:
	NSArray *ary1,*ary2,*ary3;
	// 由于NSArray对象是长度固定的,初始化时就必须赋值
	 ary1=[NSArray arrayWithObjects:
	@"ary1",[NSNumber numberWithInteger:111],
	[[[NSObject alloc] init] autorelease],@"over",nil];
	// 将Cary转换成OCary
	id cAry[]={@"ary2",[NSNumber numberWithInteger:222],
	[[[NSObject alloc] init] autorelease],@"over"};
	ary2=[NSArray arrayWithObjects:cAry count:4];
	// @方式创建对象
	ary3=@[@"ary3",[NSNumber numberWithInteger:333],
	[[[NSObject alloc] init] autorelease],@"over"];
	
	
	//数组几种遍历方式:
	void (^enumAryBlock)(id,NSUInteger,BOOL *);
	enumAryBlock=^(id obj,NSUInteger idx,BOOL *stop)
	{
		NSLog(@"index=%d,ele=%@",idx,obj);
		if(idx==2) *stop=1;
	};
	// for循环遍历
	int i;
	for(i=0;i<[ary1 count];i++)
	{
		BOOL stop=0;
		enumAryBlock([ary1 objectAtIndex:i],i,&stop);
		if(stop) break;
	}
	
	//for each 遍历
	for(id obj in ary2)
	{
		BOOL stop=0;
		enumAryBlock(obj,[ary2 indexOfObject:obj],&stop);
		if(stop) break;
	}
	// 对象方法遍历
	[ary2 enumerateObjectsUsingBlock:enumAryBlock];
	
	
	// 创建一个长度可变的OC数组
	NSMutableArray *mary=[NSMutableArray array];
	// 将ary1中所有元素添加至mary
	[mary addObjectsFromArray:ary1];
	NSLog(@"mary=%@",mary);
	
	[mary removeObjectAtIndex:3];
	// 交换下标 1和2元素的位置
	[mary exchangeObjectAtIndex:1 withObjectAtIndex:2];
	//  替换下标为0的元素
	[mary replaceObjectAtIndex:0 withObject:@"replacement"];
	NSLog(@"mary=%@",mary);
	
	[pool drain];
	return 0;
}




概括:
OC中集合只能存放OC对象
NSArray为长度不可变数组,即无法进行增删改操作,不允许元素为空,
其子类NSMutableString为长度可变,也不允许元素为空


NSArray 常用方法:
:为方便开发者,苹果官方为OC提供了许多编译器特性(语法糖),
如ARC、点语法、@方式创建对象、[index]方式访问OC数组等,
都为编译器特性,其本质是在编译过程中编译器为其添加必要的
代码或转换成调用相应方法进行处理;
常用的创建方法:
//创建一个长度为0的OC数组,由于NSArray长度不可变,创建为0长度后
//就无法使用,所以该方法一般用于NSMutableArray
+ (id)array;
//将动态个数的对象保存为一个数组,对象不能为空,
//最后必须以nil结尾,表示数组结束,OC数组内存中最后一个元素之后存放0
+ (id)arrayWithObjects:(id)obj,...,nil;
//将存放OC对象的C数组转换成OC数组
+ (id)arrayWithObjects:(const id[])objs count:(NSUInteger)count;
@创建方式:
// 实质为调用对象创建的类方法创建,因此返回的也是autorelease过的
//@开头创建的对象为不可变的NSArray
NSArray ary= @[id,id,...];

//返回数组长度
-(unsigned long)count;
// 返回下标位置对象,也可以使用 ary[index]方式访问,实质也是调用该方法
-(id)objectAtIndex:(NSUInteger)index;
// 返回对象所在下标
-(NSUInteger)indexOfObject:(id)obj;
//是否包含
-(BOOL)containsObject:(id)obj;
// 利用block遍历数组
-(void)enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop)block;




NSMutableArray 常用方法:
// 将另一个OC数组中所有元素添加进来
-(void)addObjectsFromArray:(NSArray *)from;
-(void)addObject:(id)obj;
-(void)removeAllObjects;
-(void)removeObject:(id)obj;
-(void)removeObjectAtIndex:(NSUInteger)idx;
//交换两个位置上的元素
-(void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
// 替换某个位置上的元素
-(void)replaceObjectAtIndex:(NSUInteger)idx withObject:(id)obj;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值