NSString *s = "jack";这种常量字符串比较特殊,内存分布不同,类似于C的char *str = "jack";。
[s retainCount]是一个很大的数,而不是1。
相应的_name = [s retain];也并不会让s引用技术+1,而是依旧保持一个很大的数。
两个字符串指向同一常量字符串。
NSString *str = @"jack";
NSString *s = [NSString stringWithFormat:@"%@", str];
这样的s引用计数才是1,而且和常量字符串str是完全不同的内存地址。 |