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

诡异的内存有关问题。 高手解决一下

热度:199   发布时间:2016-04-25 06:51:25.0
诡异的内存问题。 高手解决一下。
下面的代码 非常诡异,大家看一下

  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];


//测试内存是否泄露

NSMutableString *foo=[@"Julia!" mutableCopy] ;


[foo autorelease];
 
 
[foo appendString:@" I am happy"];

NSLog(@"%d", [foo retainCount]); //1



[pool release];

NSLog(@"%d", [foo retainCount]); //-1


我把foo 对象放在释放池里面了,然后将池释放之后,就变成-1 ,这时为什么??? 

由1到 -1 ,解释一下。



------解决方案--------------------
记得在某文档看到,不要相信retaincount
------解决方案--------------------
那我说一下,那个内存的release是需要时间的,是异步的,在真正释放前还要进行很多我们不知道的操作。具体什么东西,我们也不清楚。开源的BSD也没有看到啊
你在这个地方打印出来,说明在那时刻的一个状态,并不完全真实反应程序运行完毕的状态。如果能的话,Xcode就不会有内存泄露检查工具帮你检查了,你自己在末尾检查就可以。
  相关解决方案