NSString可能分配在内存的地方

2021-01-12  本文已影响0人  梁森的简书

常量区

NSString * str = @"1";
NSString * str1 = [NSString stringWithString:@"1"];

这两种方式创建的字符串都是字符串常量,在常量区。

指针里

NSString *str = [NSString stringWithFormat:@"1"];
NSString *str1 = [[NSString alloc] initWithFormat:@"1"];

这样创建的字符串使用了Tagged Pointer,字符串在指针里,节省了堆空间。

堆上

NSString *str = [NSString stringWithFormat:@"这是很长的一串字符串,无法使用Tagged Pointer"];

这样的字符串就是普通的OC对象,放在了堆空间。

上一篇 下一篇

猜你喜欢

热点阅读