在前面我们讲完了第一个集合类, NSArray, 现在我们来讲一下它的子类, NSMutableArray, NSMutableArray和NSMutableString一样, 是属于可变类型, 无论你在前期初始化的时候有没有赋值, 我们都可以在程序运行的时候给它在赋值, 下面让我们来看看例子:
例子:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
NSMutableArray *array = [NSMutableArray array];
NSLog(@"元素个数%ld ---- 元素%@", array.count, array);
[array addObject:@"rose"];
NSLog(@"元素个数%ld ---- 元素%@", array.count, array);
return 0;
}
打印出来的结果:
2015-02-05 14:47:29.325 6.NSMutableArray[3337:303] 元素个数0 ---- 元素(
)
2015-02-05 14:47:29.326 6.NSMutableArray[3337:303] 元素个数1 ---- 元素(
rose
)
既然这里可以添加元素, 那么就肯定有删除元素的方法, 不然怎么叫做可变呢? 下面来看看:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"kkk", @"aaa", @"bbb", nil];
[array addObject:@"rose"];
// 1. 删除所有元素
//[array removeAllObjects];
// 2. 删除指定的某个元素
//[array removeObject:@"rose"];
// 3. 删除指定位置的元素
[array removeObjectAtIndex:0];
NSLog(@"元素个数%ld ---- 元素%@", array.count, array);
return 0;
}
这里就不看打印的结果了, 大家回去试一下就知道了.
但NSMutableArray有一个注意点, 不要用NSArray的快速创建方式来创建, 下面来看看:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
NSArray *ary = @[@"1", @"2", @"3"];
NSMutableArray *ary2 = @[@"1", @"2", @"3", @"4"];
[ary2 addObject:@"5"];
return 0;
}
虽然NSMutableArray是继承与NSArray, 但上面的这种创建方法是不可以使用的, 因为@[] 这个方法所返回的类型必定是NSArray, 既然是NSArray, 那就不可以addObject: 了, 所以会报错:
2015-02-05 15:03:07.318 6.NSMutableArray[3403:303] -[__NSArrayI addObject:]: unrecognized selector sent to instance 0x1002049b0
剩下的东西其实也没有什么好讲的, 回去试试就可以了, 好了这次就讲到这里, 下次我们继续~~