NSMutableArray类addObject方法对对象retainCount的影响 --在MRC下

下面代码表明, NSMutableArray类的addObject方法,执行的时候,好像是首先申请一个指针变量内存,然后将对象的地址赋值给这个指针变量,再把这个指针变量作为一个节点添加到数组的元素地址链表中。


在形式上,NSMutableArray类的addObject方法,对同一个对象执行了m次,则这个对象的retainCount会加上m,如下面代码所示:


#import <Foundation/Foundation.h>

int main(int argc,const char * argv[])

{

    NSAutoreleasePool *pool =[NSAutoreleasePool new];

    NSMutableString *mstr=[NSMutableString stringWithString:@"hello world"];

    NSMutableArray *mar=[NSMutableArray new];

    printf("%lu\n",[mstr retainCount]);              //输出1

    [mar addObject:mstr];

    printf("%lu\n",[mstr retainCount]);              //输出2

    [mar addObject:mstr];

    printf("%lu\n",[mstr retainCount]);             //输出3

    [mar addObject:mstr];

    printf("%lu\n",[mstr retainCount]);             //输出4

    [mar addObject:mstr];

    printf("%lu\n",[mstr retainCount]);            //输出5

    printf("下面开始输出所有的数组元素,数组的元素个数为:  %lu\n",mar.count);            //输出5

    for(NSMutableString *mstrTemp in mar)

        printf("%s\n",[mstrTemp UTF8String]);

    [pool drain];

}


输出结果为:

1

2

3

4

5

下面开始输出所有的数组元素,数组的元素个数为:  4

hello world

hello world

hello world

hello world



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值