gpt4 book ai didi

iphone - 返回用 NSNull 填充的数组的 NSMutableArray 类别中的泄漏

转载 作者:行者123 更新时间:2023-11-28 18:08:02 25 4
gpt4 key购买 nike

我目前有一个 NSMutableArray 类别,它创建一个使用 NSNulls 传播的 NSMutableArray。当我在 Instruments 中运行这段代码时,它告诉我这里有泄漏(阅读评论以查看位置)

#import "NSMutableArray+NSNull.h"


@implementation NSMutableArray (NSNull)

-(id)initWithNullCapacity:(int)capacity{

self = [super init];
if (self) {
//Leak on [self init]
NSMutableArray *array = [self init];

for (unsigned i = 0; i < capacity; i++)
{
[array addObject:[NSNull null]];
}
self = array;
}
return self;
}

编辑:

这是我调用方法的地方:

#import "TWVStatData.h"
#import "NSMutableArray+NSNull.h"

@implementation TWVStatData

@synthesize creationTime;
@synthesize graphs;
@synthesize elements;
@synthesize type;

-(id)init{
if(self == [super init]){
type = -1;

creationTime = [[NSDate alloc] init];

graphs = [[NSMutableArray alloc] initWithNullCapacity:3];
elements =[[NSMutableArray alloc] init];
}
return self;
}

最佳答案

这会很棘手,主要是因为 NSArray 在底层是如何工作的。我建议这样做:

- (id)initWithNullCapacity:(NSUInteger)capacity {
NSMutableArray *nulls = [NSMutableArray array];
for (NSUInteger i = 0; i < capacity; i++) {
[nulls addObject:[NSNull null]];
}
return [self initWithArray:nulls];
}

我认为问题源于对 self 的赋值,尽管我不确定这一点。 NSArray 在幕后做了一些时髦的优化,所以我会避免调用 NSArray 初始化程序,直到之后您准备好所有数据。

关于iphone - 返回用 NSNull 填充的数组的 NSMutableArray 类别中的泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5652703/

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