首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Iphone >

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

2012-02-23 
诡异的内存问题。高手解决一下。下面的代码 非常诡异,大家看一下NSAutoreleasePool * pool [[NSAutoreleas

诡异的内存问题。 高手解决一下。
下面的代码 非常诡异,大家看一下

  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就不会有内存泄露检查工具帮你检查了,你自己在末尾检查就可以。

热点排行