适合有java和C基础的同学迅速了解OC
- #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;
|
|