выпуск UIViewControllers

Я использую 3 UIViewController в своем приложении, и теперь мне интересно, стоит ли выпускать их, когда я переключаюсь с другого. Очевидно, это будут скрытые, которые мне действительно не нужны, пока они не видны... для переключения видов я использую что-то вроде этого (uiwindow):

//this is in the first UIViewController
[[[UIApplication sharedApplication] keyWindow] addSubview:secondController.view];
[self.view removeFromSuperview];
//here I release the view controller
[self release];

Итак, мой вопрос... оно того действительно стоит? какие могут быть проблемы с производительностью?

Также я хотел бы спросить, знает ли кто-нибудь, почему эти строки работают в таком порядке (см. Ниже). Я пробовал наоборот и у меня проблемы с ориентацией что перестало работать? любые намеки?

//working
[[[UIApplication sharedApplication] keyWindow] addSubview:secondController.view];
[self.view removeFromSuperview];

//not working
[self.view removeFromSuperview];
[[[UIApplication sharedApplication] keyWindow] addSubview:secondController.view];

Спасибо

Рауль


person rhormaza    schedule 01.08.2011    source источник


Ответы (1)


... оно того стоит? какие могут быть проблемы с производительностью?

Вы можете очень хорошо освободить контроллер представления, как только вы добавили его в качестве подвида другого представления (superView), и в этом случае superView сохраняет подпредставление. [[UIApplication sharedApplication] keyWindow] — это superView для secondController.view, и он сохраняет secondController.view. Итак, это правильный способ сделать это, и он не вызовет проблем с производительностью.

person EmptyStack    schedule 01.08.2011
comment
да .. Я понял .. спасибо @EmptyStack ;) .. также я только что прочитал, что removeFromSuperView действительно освобождает объект (View) .. поэтому вызов освобождения, о котором я говорил, не понадобится ... что теперь если я создам uiviewcontroller с помощью сохранения?.. скажем, UIVIewController *uCtrl = [[[UIViewController alloc] init] retain]... следуя рекомендациям Apple, я должен освободить объект... не так ли? - person rhormaza; 01.08.2011
comment
Я только что понял, что removeFromSuperView выпускает UIView, а не UIViewController... Я проверил документы Apple, и они сказали, что если вы сохраните представление... вам нужно вызвать выпуск... - person rhormaza; 01.08.2011