NSString的秘密

来源:互联网 发布:java打印金字塔型数字 编辑:程序博客网 时间:2024/05/16 04:05

NSString的三种类型

_NSCFConstantString

常量字符串

_NSTaggedPointerString

_NSTaggedPointerString类型的字符串指针中并不存储地址,而是存储真正的数据。在64位CPU中指针长度为64位,其中用60位来存储字符串,当字符串不够存时才真正分配内存。(这60位怎么存储字符串,苹果有一套编码规则,本人测试纯英文不超过9个字符)

NSCFString

在内存区分配一块内存,存储字符串

面试题

NSString *str1 = @”hello world!”;
NSLog(@”str1: %d”,[str1 retainCount]);
NSString *str2 = [NSString stringWithFormat:@”hello”];
NSLog(@”str2: %d”,[str2 retainCount]);
NSString *str3 = [NSString stringWithFormat:@”hello world!”];
NSLog(@”str3: %d”,[str2 retainCount]);

答案如下:

str1: -1
str2: -1
str3: 1

字符串类型如下:

这里写图片描述

原创粉丝点击