Боится утечки памяти при использовании метода addsubiew в iOS

#iphone #ios4

#iPhone #ios4

Вопрос:

в iPhone: когда я добавляю вложенный просмотр в представление, использование [myview addsubview: anotherview.view] сохранит «мой вид» в памяти, что может вызвать проблему при добавлении большого количества представлений в качестве вложенных представлений.

Ответ №1:

Да, addSubview сохраняет добавленные вами подвиды, и да, если вы добавите слишком много подвидов, у вас могут возникнуть проблемы с памятью, но это маловероятно, если это произойдет, вы получите

 - (void)didReceiveMemoryWarning
  

За которым следует:

 - (void)viewWillUnload
  

а затем:

 - (void)viewDidUnload
  

Это разгрузит ваше представление и освободит его подвиды. Однако не забудьте установить для дополнительных вложенных представлений значение nil в методе viewDidUnload, поскольку эти вложенные представления также сохраняются самим ViewController, поэтому они не будут освобождены при выгрузке представления, если вы не установите для них значение nil здесь.

Комментарии:

1. Могу ли я заменить это текущее представление другим представлением, чтобы избежать возможных проблем с памятью, если да, то как я могу это сделать?

2. @Alaa Eldin, какое именно представление вы имеете в виду?, вы можете удалить вложенные представления в любое время.

3. вот вы, что мне именно нужно, при запуске приложения я создаю объект из представления «mainview» и добавляю его в окно, это mainview содержит кнопку, в прослушивателе этой кнопки (при нажатии функции) я должен создать новое представление, используя [mainview addsubview newview.view]метод, здесь я хочу удалить mainview и вместо этого показать newview, спасибо за вашу помощь.

Ответ №2:

в вашем примере myview сохранится anotherview.view (view.view? ..).
Однако myview он не будет сохранен до тех пор, пока вы не добавите его в качестве вложенного представления в другое представление или не сохраните его каким-либо другим способом.