NSString * s1 = @"123456789";
NSString * s2 = @"123456789";
该声明方式s1、s2存储在字符串的常量池中,类型为**__NSCFConstantString,常量池中数据循环使用,s1与s2的地址一致0x10e8ae140**
NSString * s3 = [NSString stringWithFormat:@"123456789"];
NSString * s4 = [[NSString alloc] initWithFormat:@"123456789"];
该声明方式,s3、s4类型为NSTaggedPointerString,没有引用计数,s3与s4地址一样,存放在堆区0xd9c919e3e01acbcf
NSString * s5 = [NSString stringWithFormat:@"1234567890"];
NSString * s6 = [[NSString alloc] initWithFormat:@"1234567890"];
该声明方式,s5、s6类型为**__NSCFString****,s5引用计数为2(该声明方式自动调用autorelease),s6引用计数为1,s5与s6地址不一样,存放在堆区**0x600001d0a280
NSString * s7 = [NSString stringWithString:@"1234567890"];
NSString * s8 = [[NSString alloc] initWithString:@"1234567890"];
该声明方式,s7、s8类型为****__NSCFConstantString**,,s7与s8地址一样,存放在常量区;**
WithString:的声明方式,如果参数是NSTaggedPointerString或者****__NSCFConstantString类型,返回对象地址为参数的地址,如果参数是**__NSCFString类型,****返回对象**地址为新的的地址