集合实例化方法+方法或-方法

本文探讨了集合类的可变与不可变类型的区别及内存管理机制,对比了数组实例化方法,并阐述了在开发中如何有效利用这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        集合类一般都有两个版本:可变类型和不可变类型。其中不可变类型是完全线程安全的,而可变类型不能保证这一点。所以在API接口中,不应该返回可变类型的集合参数。有时候更有效的做法是:在程序内部保持一个可变类型的集合类对象,而返回一个复制的,不可变类型的集合类对象以供外部访问。

 

        如数组NSArrayNSMutableArray

        数组实例化的方法即有-方法,也有+方法。    

    // -方法实例化
    NSMutableArray *array11 = [[NSMutableArray alloc] init];
    NSMutableArray *array12 = [[NSMutableArray alloc] initWithCapacity:1];
    NSMutableArray *array13 = [[NSMutableArray alloc] initWithObjects:@"1", nil];
    NSMutableArray *array14 = [[NSMutableArray alloc] initWithArray:array13];
    // +方法实例化
    NSMutableArray *array21 = [NSMutableArray array];
    NSMutableArray *array22 = [NSMutableArray arrayWithCapacity:1];
    NSMutableArray *array23 = [NSMutableArray arrayWithObjects:@"1", nil];
    NSMutableArray *array24 = [NSMutableArray arrayWithArray:array23];


    不同的实例化方法都是根据其内存管理机制来定义的。

    首先使用-方法,即alloccopy都会分配内存,需要手动release

    而使用+方法,也会分配内存,不过系统会来管理这块内存,不需要手动release,即被设置为autorelease,被加入自动释放池autorelease pool

    在当前开发中的内存管理机制因为有了ARC,所以少了内存管理的不少烦心事。因为ARC是自动在合适的位置帮你添加release代码之类的。但是,还是有点区别的。ARC可能在大多数时候比autorelease pool更高效一些。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番薯大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值