读书人

高手解答一下NSString的诡异有关问题

发布时间: 2012-01-20 18:53:53 作者: rapoo

高手解答一下,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本来就不是很准

读书人网 >Iphone

热点推荐