读书人

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

发布时间: 2012-02-23 22:01:35 作者: rapoo

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

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

读书人网 >Iphone

热点推荐