当前位置: 代码迷 >> Iphone >> 高手解答一下,NSString的诡异有关问题
  详细解决方案

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

热度:156   发布时间:2016-04-25 06:49:53.0
高手解答一下,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本来就不是很准