------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
集合类
oc数组只能存放oc对象,不能存放非oc对象类型,比如int,struct,enum等
oc数组不能存放空值
一.NSArray
NSArray
->NSMutableArray
这个array永远是空数组
<span style="font-size:14px;"> NSArray *array = [NSArray array]
NSArray *array2 = [NSArray arrayWithPbject:@"jack"];
多个元素时 nil数组元素结束的标记
NSArray *array3 = [NSArray arrayWithPbjects:@"jack",@"rose",nil];
NSArray *array4 = [NSArray arrayWithPbjects:@"jack",@"rose",nil];
//快速创建一个NSArray对象
NSArray *array4 = @[@"jack",@"rose"];
//NSArray的元素个数
NSLog(@"%ld",array3.count);
//NSArray中元素的访问
[array3 objectAtIndex:1];访问第一个//效率低
array3[1];//编译器特性,把上诉代码转成这个</span><span style="font-size: 11px;">
</span>
二.NSArray的遍历
快速遍历
<span style="font-size:14px;"> Person *p = [[Person alloc] init];
NSArray *array = @[p,@"jack"];
for (int i = 0;i < array.count; i++)
{
NSLog(@"%@",array[i]);
}</span>
<pre name="code" class="objc"><span style="font-size:14px;"> //int i = 0;
for (id obj in array)
{
NSUInteger i = [array indexOfObject:obj];//找出obj在数组中的位置是i
NSLog(@"%ld - %@",i,obj);
//i++;
}
</span>
<span style="font-size:14px;"> [array enumerateObjectsUsingBlock:
//每遍历到一个元素,就会调用一次block
//并且当前元素和索引位置当做参数传给block
^(id obj,NSUInteger idx, BOOL *stop/*停止遍历*/)
{
NSLog(@"%ld - %@",idx,obj);
if (idx == 0)
{
*stop = YES;//内部有一个for循环
}
}];
</span>
<span style="font-size:14px;"> </span><pre name="code" class="objc"><span style="font-size:14px;"> void ^(myblock)(id,NSUInteger, BOOL *s) = ^(id obj,NSUInteger idx, BOOL *stop)
{
NSLog(@"%ld - %@",idx,obj);
if (idx == 0)
{
*stop = YES;
}
}
for (int i = 0;i < array.count ;i++)
{
//用来标记是否需要停止遍历
BOOL isStop = NO;
//取出元素
id obj = array[i];
myblock(OBJ,I,&isStop);
if (isStop)
{
break;
}
}
</span>
三.NSMutableArray
<span style="font-size:14px;"> NSMutableArray *array = [NSMutableArray array];
NSMutableArray *array = [NSMutableArray arrayWithPbjects:@"rose",@"jim",nil];;
</span>
添加元素
<span style="font-size:14px;"> [array addObject:[[Person alloc] init]];
[array addObject:@"jack"];
</span>
删除元素
<span style="font-size:14px;"> [array removeAllObjects];
//删除指定元素
[array removePbject:@"jack"]
//删除指定位置的元素
[array removePbjectAtIndex:2];</span><span style="font-size: 11px;">
</span>
错误写法 [array addPbject:nil]
------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------