OC中NSArray保存id类型得数据
相当于加方法
NSArray *arr = @[@"0",@"1",@"2"];
表示数组元素个数
arr.count
NSArray为静态数组,初始化后不能被修改。
NSArray * arr1 = [[NSArray alloc] initWithObjects:@"1",@"2",@"3",nil];
NSArray * arr2 = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];
数组中能潜逃数组
NSArray * arr3 = [NSArray arrayWithObjects:arr,@"wahaha",arr1,arr2,nil];
NSArray * arr4 = @"hello world";
判断一个对象是某个类的方法
使用__unsafe_unretained 弱引用 可以理解为非ARC中的assgin
不能用来修饰属性 成员变量
ARC中的弱引用weak (weak可以修饰属性 在对象使用完后归零,用完时候a=nil);
BOOL flag = [arr4 isKindOfClass:[NSArray class]];
if(flag)
{
NSLog(@"arr4 是一个NSString类型的对象");
}
else NSLog(@"arr4是一个NSString类型的对象");
数组遍历
1.枚举器
NSEnumerator * enumerator = [arr1 objectEnumerator];
while(id obj = [enumerator nextObect]){
NSLog(@"%@",obj);
}
2.遍历数组方法
for(int i = 0; i < arr1.count; i++)
{NSLog(@"%@",arr1[i]);}
3.快速枚举法
for(id obj in arr)
{
NSLog(@"%@",obj);
}
取出数组中的某一个元素
id obj = arr1[0];
id obj1 = [arr1 objectAtIndex:0];
if(obj isEqualToString:obj1)
{
NSLog(@"字符串相等");
}
NSLog(@"obj %p , obj1 %p",obj,obj1);
判断数组中是字符串还是数组
NSArray* arr5 =@[arr1,@"student1",@"student2",arr2,arr4,@"student3"];
int i =0;
for (id obj in arr5) {
if([arr5[i] isKindOfClass:[NSArray class]])
{
NSLog(@"arr5[%i] is NSArray:%@",i,obj);
}
else
NSLog(@"arr5[%i] is NSSting:%@",i,obj);
i++;
}
NSMutableArray * arr1 = [NSMutableArray array];
NSMutableArray * arr2 = [[NSMutableArray] init];
NSMutableArray * arr3 = [[NSMutableArray] initWithArray:arr1];
NSMutbaleArray * arr4 = [[NSMutableArray alloc] initWithCapacity:10];//速度更快
NSMutableArray * arr5 = [[NSMutableArray alloc] arrayWithObject:(id),…,nil];
常用的增删改查
NSMutableArray * arr = [[NSMutableArray alloc] init];
for(int i =0;i<10;i++)
{
[arr addObject:[NSString stringWithFormat:@"stduent%i",i]];
}
NSLog(@"arr is %@",arr);
删除第三个元素
[arr removeObjectAtIndex:2];
for(id obj in arr)
{
NSLog(@"%@",obj);
}
删除第五个到第七个元素
[arr removeObjectsInRange:NSMakeRange(4,3)];
for(id obj in arr)
{
NSLog(@"%@",obj);
}
改
[arr replaceObjectAtIndex:0 withObject:@"student1000"];
查
[arr objectAtIndex:0];