Как освободить этот объект? - PullRequest
1 голос
/ 08 июля 2010

Я взял пример MailComposer, добавленный в простой проект, и под кнопкой я выполняю следующий код:

// display in app email
MailComposerViewController *emailClient = [[MailComposerViewController alloc] init];
[self.view addSubview:emailClient.view];
[emailClient showPicker:self];
[emailClient release];

Последняя строка вызывает у меня головную боль.Если я не делаю это так, как будто создаю утечку памяти, если я добавляю эту строку, почтовый клиент появляется, но затем приложение зависает, когда я нажимаю кнопку «Отмена» или «Отправить».С утечкой памяти (то есть без последней строки) все работает отлично.

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

Спасибо, amok

1 Ответ

1 голос
/ 08 июля 2010

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

Здорово, что вы хотите использовать как можно меньше памяти; но иногда просто необходимо поддерживать некоторые объекты в живых.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...