gpt4 book ai didi

iOS NSMutableArray removeObjectAtIndex

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

这是我在 ViewController.m 文件中的代码,

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];

NSLog(@"%f",[self usedMemory]);
NSMutableArray *array= [[NSMutableArray alloc]init];
for (int i = 0; i < 100; i++) {
NSMutableData *data = [NSMutableData dataWithLength:10000];
[array addObject:data];
}
NSLog(@"%f",[self usedMemory]);

for (int i = 0; i < 100; i++) {
[array removeObjectAtIndex:0];
}
NSLog(@"%f",[self usedMemory]);
}

这是usedMemory方法:

- (double)usedMemory
{
task_basic_info_data_t taskInfo;

mach_msg_type_number_t infoCount = TASK_BASIC_INFO_COUNT;

kern_return_t kernReturn = task_info(mach_task_self(),

TASK_BASIC_INFO,

(task_info_t)&taskInfo,

&infoCount);
if (kernReturn != KERN_SUCCESS

)
{
return NSNotFound;
}
return taskInfo.resident_size / 1024.0 / 1024.0;
}

结果如下:

2015-01-26 22:39:00.058 audio_memory_test[9050:874963] 25.011719
2015-01-26 22:39:00.060 audio_memory_test[9050:874963] 26.312500
2015-01-26 22:39:00.060 audio_memory_test[9050:874963] 26.312500

为什么删除数组中的对象时内存没有释放? removeObjectAtIndex 方法做了什么?如何释放这段内存?

最佳答案

当你在最后一个循环之后调用 [self usedMemory] 时,你的对象仍然保存在内存中。它们所属的自动释放池还没有被耗尽;这通常发生在您离开源代码的范围并且系统再次取得控制权时。

关于iOS NSMutableArray removeObjectAtIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28152383/

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