zoukankan      html  css  js  c++  java
  • Foundation框架: 8.OC中的集合类之二

    在前面我们讲完了第一个集合类, 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
    





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

  • 相关阅读:
    java 缓存框架java caching system使用示例
    2020牛客寒假算法集训营2
    VJ train1 O统计问题 题解
    ACM#学习心得0
    2020牛客寒假集训营1
    高精度加减乘除
    VJ train1 I彼岸
    VC编译常见错误
    EVC开发MapXMobile 环境搭建
    用Evc+Pocket PC 2003 开发MapxMobie
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4282807.html
Copyright © 2011-2022 走看看