как освободить объект при добавлении его в качестве подпредставления к основному виду? - PullRequest
0 голосов
/ 16 ноября 2011

Я использую два контроллера представления. При нажатии кнопки первого контроллера вида я добавляю второй вид контроллера в качестве подпредставления к первому контроллеру вида. Я не могу освободить контроллер второго представления, поэтому я получаю утечку памяти для объекта secondviewcontroller. Как освободить второй объект контроллера представления после добавления его как подпредставление?

 -(IBAction)buttonclick {
    secondviewcontroller * obj = [[secondviewcontroller alloc]init];
    [self.view addsubview:obj.view];
   [obj release]; //if i release it here the view is also getting released and only black screen is displayed.how to release the second view controller obj after this?
    }

извините, что печатал ранее

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Вы действительно не должны этого делать.

В приложениях для iPhone вы всегда должны представлять один контроллер вида для каждого экрана.Я бы предложил перенести любую логику, имеющуюся во втором контроллере представления, в класс поддержки добавляемого представления.

Если у вас нет намерения иметь два контроллера представления, удерживайте ссылку на второе представлениеконтроллер в контроллере первого вида (сохраняется) и освобождает контроллер второго вида всякий раз, когда второй вид удаляется из его суперпредставления (и в освобождении контроллера первого вида).

0 голосов
/ 16 ноября 2011

Перепишите ваш код как:

-(IBAction)buttonclick
{
    secondviewcontroller * obj = [[secondviewcontroller alloc]initWithNib:@"nibname" bundle:nil];
    [self.view addsubview:obj];
    [obj release]; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...