1
我跑在执行以下操作的iPhone应用程序:removeItemAtPath中的内存泄漏:错误:?
+ (void)performWrite:(NSData *)data {
[data retain];
[data writeToFile:@"WriteTest.tst" atomically:YES];
[[NSFileManager defaultManager] removeItemAtPath:@"WriteTest.tst" error:NULL];
[data release];
}
当仪器运行,但是,我看到在每次调用removeItemAtPath:error
泄漏,具有以下跟踪到内部泄漏:
9 MyApplication +[StorageUtil performWrite:]
8 Foundation -[NSFileManager removeItemAtPath:error:]
7 Foundation +[NSFilesystemItemRemoveOperation filesystemItemRemoveOperationWithPath:]
6 Foundation -[NSOperation init]
5 CoreFoundation +[NSObject new]
4 CoreFoundation +[NSObject alloc]
此堆栈跟踪被设置为两者的NSRecursiveLock的泄漏源,以及_NSOperationData对象的。所以我想知道的是我是否不正确地使用removeItemAtPath:error:
方法,或者是否确实存在泄漏。我想我会在将它提交给雷达之前在这里检查。
请注意,data
参数正确地遵守此方法调用之外的保留/释放循环。我不相信这是泄漏的根源。