高手解答一下,NSString的诡异问题,
NSString* s1=@"ssgsdgsdgsdg";
NSLog(@"%d",[s1 retainCount]); //-1
NSString* s2=[s1 copy];
NSLog(@"%d",[s2 retainCount]); //-1
为什么是-1, 原因是: 字符串存储在 类似C++中的常量区,对吧。
----------------------------------
但是如下代码如何解释?
NSString* s1=[ [NSString alloc ]init];
NSLog(@"%d", [s1 retainCount]);
结果是-1 ,我没有释放之, 用官话来说, 只要alloc消息了,就成了1 ,为什么为-1 ,解释一下,谢谢。
NSString* s=[[NSString alloc] initWithString:@" nihao"];
NSLog(@"%@",s);
NSLog(@"%d", [s retainCount]); //-1 也是-1,为什么,
[s release];
NSLog(@"%d", [s retainCount]); //-1
[解决办法]
NSString 是存储在常量区的,它是不会被自动释放。这个和c语言的常量字符串是一样的!
[解决办法]
lz你机器出问题。。。话说这个retaincount本来就不是很准