• Objective-C中NSString对象的retainCount


    NSString对象的retainCount为-1
    Objective-C中NSString对象与其他类型的对象在引用计数上存在着不小的差别。对于NSString的对象,不同的创建方式以及不同的字符个数都会影响对象的引用计数。
    1)首先,当字符串的个数小于10个的时候,不管采用哪一种创建方式所得到的字符串都不存在引用计数一说
     NSMutableArray *ary = [[NSMutableArray array] retain];
        NSString *str = [NSString stringWithFormat:@"test"];
        [str retain];
        [ary addObject:str];
        NSLog(@"%@-->%zd",str,[str retainCount]);
        [str retain];
        [str release];
        [str release];
        NSLog(@"%@-->%zd",str,[str retainCount]);
        [ary removeAllObjects];
    2)当字符串的长度大于等于10时,开始产生差别(stringWithString的创建方式与字面量方式是一样的)
    NSMutableArray *ary = [[NSMutableArray array] retain];
        NSString *str = [NSString stringWithFormat:@"testatestatestatest"];
        [str retain];
        [ary addObject:str];
        NSLog(@"%@-->%zd",str,[str retainCount]);
        [str retain];
        [str release];
        [str release];
        NSLog(@"%@-->%zd",str,[str retainCount]);
        [ary removeAllObjects];
        NSLog(@"%@--->%zd",str,[str retainCount]);
     
    3)将%ld占位符换成%lu后,会发现,当字符串的长度小于10个的时候,对象的引用计数是64位OS下无符号长整型的最大值
  • 相关阅读:
    SWT 重启案例分析(二)
    SWT 重启案例分析(一)
    手机重启问题 Log 抓取方法
    手机重启问题快速分析定位指南
    SWT 手机重启问题分析指南
    属性动画 使用详解
    补间动画 使用详解
    帧动画 使用详解
    Android动画 使用详解
    Linux grep 命令大全
  • 原文地址:https://www.cnblogs.com/banchuangshuying/p/9233064.html
Copyright © 2020-2023  润新知