Foundation框架: 8.OC中的集合类之二 - NSMutableArray的基本认识

在前面我们讲完了第一个集合类, NSArray, 现在我们来讲一下它的子类, NSMutableArray, NSMutableArrayNSMutableString一样, 是属于可变类型, 无论你在前期初始化的时候有没有赋值, 我们都可以在程序运行的时候给它在赋值, 下面让我们来看看例子:




例子:

#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





剩下的东西其实也没有什么好讲的, 回去试试就可以了, 好了这次就讲到这里, 下次我们继续~~

posted @ 2015-02-05 14:43  背着吉他去流浪  阅读(188)  评论(0编辑  收藏  举报