#iphone #objective-c
#iPhone #objective-c
Вопрос:
Мне нужно понять, что происходит с точки зрения памяти в этой ситуации. Правильно ли я предполагаю, что при использовании метода addSubview это представление сохраняет новое представление, а затем при вызове removeFromSuperview количество сохранений в этом superview уменьшается до нуля (в конечном итоге)?
Я создаю представление, подобное этому:
homeViewController = [[HomeViewController alloc]init]; //self retain count = 1
[self.view addSubview:homeViewController.view]; //self retain count = 1; self.view retain count = 1
Я удаляю представление следующим образом:
[homeViewController.view removeFromSuperview]; //self retain count = 1; self.view retain count = 0
Ответ №1:
Когда вы выполняете addSubview, оно сохраняет представление, так что вы могли бы автоматически выпустить его, если бы не хотели отслеживать, когда оно больше не использовалось.
Комментарии:
1. Под этим вы подразумеваете «self» или «self.view»? или они одни и те же?
2. содержащее представление сохраняет вложенные представления. Таким образом, ваш self.view сохраняет в HomeViewController.view.
3. Таким образом, removeFromSuperview просто освобождает self.view сохраняется в HomeViewController.больше ничего не просматривать
4. Ну, это также выводит его из иерархии представлений.
Ответ №2:
HomeViewController
также сохраняется представление, потому что это контроллер представления. Таким образом, представление не будет уничтожено, если контроллер также не будет освобожден.