NSString的几种引用计数

tips:本文主要讨论描述引用计数,未做相应release



    //字符串常量系统不收回不引用 retain count -1 unsigned int 2147483647

    NSString *stringConst = @"hello";

    NSLog(@"stringConst:%@  retain count %ld  direct to %p <---- self address %p",stringConst,[stringConstretainCount],stringConst,&stringConst);

    

    //对常量retain release无效

    [stringConst retain];

    NSLog(@"stringConst:%@  retain count %ld  direct to %p <---- self address %p",stringConst,[stringConstretainCount],stringConst,&stringConst);

    

    //stringWithString取决于后面的对象常量->不引用 -1

    NSString *string_C = [NSStringstringWithString:stringConst];

    NSLog(@"string_C   :%@  retain count %ld  direct to %p <---- self address %p\n\n",string_C,[string_CretainCount],string_C,&string_C);

    

    //变量系统进行引用计数

    NSString *string_A = [NSStringstringWithFormat:@"hello A"];

    NSLog(@"string_A:%@  retain count %ld  direct to %p <---- self address %p",string_A,[string_AretainCount],string_A,&string_A);


    //stringWithString取决于后面的对象变量->一个对象B对另一个对象A的引用 +1=2

    NSString *string_B = [NSStringstringWithString:string_A];

    NSLog(@"string_B:%@  retain count %ld  direct to %p <---- self address %p",string_B,[string_BretainCount],string_B,&string_B);


    /*stringConstNSString不可变字符串对象,自身地址不变,并不是表示stringConst的值不变,而是初始化之后不能改变该内存里的值,

     但可以为该变量重新分配内存空间,也就是说自身地址没变,指向的内存地址变了,可对比第一条和最后一条log*/

    stringConst = @"test";

    NSLog(@"stringConst:%@  retain count %ld  direct to %p <---- self address %p",stringConst,[stringConstretainCount],stringConst,&stringConst);


log如下:

2015-04-29 15:40:02.431 try[2097:64393] stringConst:hello  retain count -1  direct to 0x10f337050 <---- self address 0x7fff508c8b58

2015-04-29 15:40:02.431 try[2097:64393] stringConst:hello  retain count -1  direct to 0x10f337050 <---- self address 0x7fff508c8b58

2015-04-29 15:40:02.431 try[2097:64393] string_C   :hello  retain count -1  direct to 0x10f337050 <---- self address 0x7fff508c8b50


2015-04-29 15:40:02.431 try[2097:64393] string_A:hello A  retain count 1  direct to 0x7fb8db9041d0 <---- self address 0x7fff508c8b48

2015-04-29 15:40:02.431 try[2097:64393] string_B:hello A  retain count 2  direct to 0x7fb8db9041d0 <---- self address 0x7fff508c8b40

2015-04-29 15:40:02.431 try[2097:64393] stringConst:test  retain count -1  direct to 0x10f337110 <---- self address 0x7fff508c8b58





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值