Foundation框架: 8.OC中的集合类之二 - NSMutableArray的基本认识
在前面我们讲完了第一个集合类, 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
剩下的东西其实也没有什么好讲的, 回去试试就可以了, 好了这次就讲到这里, 下次我们继续~~