当我创建一个新项目并运行时,所有代码都是:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
内存为53M:
然后我改变了代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
for (int i = 0; i < 1000; i ++) {
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds];
tableView.backgroundColor = [UIColor redColor];
tableView.userInteractionEnabled = NO;
[self.view addSubview:tableView];
}
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
for (__strong UITableView *tableView in self.view.subviews) {
[tableView removeFromSuperview];
tableView = nil;
}
}
记忆倾向:
在录制视图之前,内存为117M,在录制视图后,删除了所有子视图,内存下降到91M。
为什么91M不是53M?
注意:我使用iPhone X模拟器。
答案 0 :(得分:0)
启动内存探查器并查看其间创建的对象。 UITableView是一个非常复杂的对象,因此可能会缓存或仍然存在各种类型的东西,但无法确切知道。