我尝试在Objective C中编写一个程序来计算一些东西.不幸的是,有很多要计算,并且程序正在运行10000次迭代的循环.总运行时间约为5分钟.这不是问题,但在运行内存时,程序使用的内存会急剧上升(高于2GB),我认为这是因为某些值未发布.我将问题缩小到在循环内创建NSArray.有问题的代码(改为专注于问题)是这样的:
for (NSInteger k = 0; k<100000; k++) {
NSMutableArray *mutableTestArray = [NSMutableArray new];
for (NSInteger i=0; i<200; i++){
NSMutableArray *subArray = [NSMutableArray new];
for (NSInteger j=0; j<200; j++) {
//simplified version, normally the valus for sub array are dependent on some other factors
[subArray addObject:[NSArray arrayWithObjects:@"test", @"test", nil]];
}
[mutableTestArray addObject:subArray];
}
//do stuff with mutableTestArray
//change parameters that go into sub array
}
Run Code Online (Sandbox Code Playgroud)
如果我更换:
[subArray addObject:[NSArray arrayWithObjects:@"test", @"test", nil]];
Run Code Online (Sandbox Code Playgroud)
有:
[subArray addObject:@"test"];
Run Code Online (Sandbox Code Playgroud)
它工作正常.所以我想我不得不释放我创建的数组.但是怎么样?我启用了ARC,据我所知,如果启用了ARC,我无法手动释放对象.如果有人可以帮我改变代码或者提示我可以学习如何正确地进行内存管理,那将会很棒.
谢谢