gpt4 book ai didi

objective-c - NSString stringByAppendingPathComponent 上的内存泄漏 :

转载 作者:行者123 更新时间:2023-11-29 11:11:32 31 4
gpt4 key购买 nike

Analyze 显示内存泄漏,我在以下代码片段中为 fileB 分配了 filePath 值:

NSString *docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];

NSString *filePath = [docsDir stringByAppendingPathComponent:@"/fileA"];

if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
self.propertyA = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
} else {
// initialize array with default values and write to data file fileA
[self populatePropertyAForFile:filePath];
}

filePath = [docsDir stringByAppendingPathComponent:@"/fileB"];

if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
self.propertyB = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
} else {
// initialize array with default values and write to data file fileB

[self populatePropertyBForFile:filePath];

}

我理解是因为之前的值(fileA)没有被释放。但我不知道如何阻止这种泄漏。

最佳答案

没有。 filePath 没有错。问题几乎可以肯定是您的两个属性 propertyApropertyB。如果它们是保留属性,那么您分配给它们的数组和它们的内容将泄漏,因为您拥有您分配的数组并且您没有释放它们。像这样更改行:

self.propertyA = [[[NSMutableArray alloc] initWithContentsOfFile:filePath] autorelease];
// ^^^^^^^^^^^ will release ownership of the array

关于objective-c - NSString stringByAppendingPathComponent 上的内存泄漏 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11347677/

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