您的位置:首页 > 其它

XCode提示 "Just Leaking" 错误的解决方法

2011-05-05 10:49 363 查看
今天随便写了一个测量代码运行时间的小程序,代码是这样的:

NSDate* d1=[NSDate date];

//dosomthing

NSDate* d2=[NSDate date];
NSLog(@"time: %f",[d2 timeIntervalSinceDate:d1]);


当我通过 run->console 查看日志输出时,出现了" *** _NSAutoreleaseNoPool(): Object 0x36acd0 of class NSCFDate autoreleased with no pool in place - just leaking" 。

对于Autorelease的对象,如果没有AutoreleasePool的话,就会提示内存泄露的错误。可问题是我怎么知道哪些对象是Autorelease的,哪些不是呢?在此发现了一个规律:如果对象不是用[[object alloc] init(withXXX)] 创建的,就是Autorelease的。

正确的写法:

NSAtuoreleasePool* pool=[NSAutoreleasePool new];
NSDate* d1=[NSDate date]; //dosomthing NSDate* d2=[NSDate date]; NSLog(@"time: %f",[d2 timeIntervalSinceDate:d1]);
[pool drain]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐