gpt4 book ai didi

iphone - 内存泄漏removeItemAtPath :error:?

转载 作者:行者123 更新时间:2023-12-03 17:18:10 25 4
gpt4 key购买 nike

我正在 iPhone 上运行一个应用程序,该应用程序执行以下操作:

+ (void)performWrite:(NSData *)data {
[data retain];
[data writeToFile:@"WriteTest.tst" atomically:YES];
[[NSFileManager defaultManager] removeItemAtPath:@"WriteTest.tst" error:NULL];
[data release];
}

但是,当在 Instruments 中运行时,我在每次调用 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: 方法不当,或者是否确实存在泄漏。我想在将其提交给 Radar 之前我应该​​先检查一下这里。

请注意,data 参数正确遵守此方法调用之外的保留/释放周期。我不相信这是泄漏的根源。

最佳答案

该函数在单独的线程(使用 pthread_create() 创建)中调用,因此未包装在 NSAutoreleasePool 中。在方法调用之前创建池并在调用之后将其清空,从而解决了泄漏问题。

关于iphone - 内存泄漏removeItemAtPath :error:?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1144659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com