Память не вернулась к началу после удаления всех подпредставлений - PullRequest
0 голосов
/ 23 мая 2018

Когда я создаю новый проект и запускаю, весь код:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

память 53M:

enter image description here

Затем я изменил код:

- (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;
    }
}

тенденция памяти:

enter image description here

До того, как я записал на пленкупредставление, память составляет 117M, после того, как я коснулся представления, все вспомогательные представления удалены, память уменьшилась до 91M.

Почему 91M не 53M?

ПРИМЕЧАНИЕ:Я использую симулятор iPhone X.

1 Ответ

0 голосов
/ 23 мая 2018

Запустите профилировщик памяти и посмотрите, какие объекты создаются между ними.UITableView - это довольно сложный объект, поэтому вполне возможно, что все виды вещей кэшируются или все еще существуют, но точно узнать это невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...