常量区
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对象,放在了堆空间。
网友评论