2013-08-02 11 views
0

Я использую MJDetailViewController в качестве всплывающего контроллера, который управляет покупками In-App в моем приложении.Retain View Controller

Поскольку этот вид контроллера может быть вызван несколько раз я не могу выпустить его обычным способом

- (IBAction)8Button { 
MJDetailViewController *detailViewController = [[MJDetailViewController alloc] initWithNibName:@"MJDetailViewController" bundle:nil]; 
[self presentPopupViewController:detailViewController animationType:MJPopupViewAnimationSlideTopTop]; 
[detailViewController release]; 
} 

В случае, если пользователь нажимает на нее еще раз это вызывает приложение к краху.

Поскольку он не выпускается, он вызывает утечку памяти, которую мне нужно исправить. Я предполагаю, что мне нужно сохранить detailViewController и выпустить его на этапе dealloc, но я не знаю, как это сделать.

Код для загрузки detailViewController нижеследовал:

- (IBAction)8Button { 
MJDetailViewController *detailViewController = [[MJDetailViewController alloc] initWithNibName:@"MJDetailViewController" bundle:nil]; 
    [self presentPopupViewController:detailViewController animationType:MJPopupViewAnimationSlideTopTop]; 
} 

Любая помощь будет очень приветствуется ...

+0

Поскольку его единственная ссылка хранится в локальной переменной, как ее можно «вызывать несколько раз»? – newacct

ответ

0

Уволить контроллер представления деталей вы не должны выпускать его, вы должно быть выполнено:

[self dismissPopupViewControllerWithanimationType:MJPopupViewAnimationFade]; 
+0

То, на что оно установлено в данный момент, поскольку это было по умолчанию в любом случае, однако, когда я анализирую его на Xcode, возникает «Потенциальная утечка объекта, хранящегося в« detailViewController » – nobbsy

+0

Как пользователь может нажать на него снова? После того, как он был уволен? – Wain

+0

Popupviewcontroller находится поверх главного контроллера представления. Когда фон закрывается, он закрывает popupviewcontroller, поэтому кнопка, чтобы открыть его обратно, все еще находится на главном контроллере представления, чтобы пользователь мог выбрать его. снова – nobbsy