• 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下无符号长整型的最大值
  • 相关阅读:
    Python模块介绍及常见报错
    Vue入门及基本使用
    仿黑客帝国片头文字流星雨
    CSS3之flex布局演示
    京东商城延迟加载
    python第四次学习笔记
    python第二次学习笔记
    今天的第一个程序
    python第一次学习笔记(可能会有更新)
    ios导航条透明
  • 原文地址:https://www.cnblogs.com/banchuangshuying/p/9233064.html
Copyright © 2020-2023  润新知