Временные экземпляры делегата в в цель-с - PullRequest
0 голосов
/ 31 марта 2011

Я пытаюсь написать некоторые общие функции обработчика ответов http, которые иногда открывают UIAlertViews.

Эти универсальные обработчики являются методами класса, на данный момент не знающими своих вызывающих.

Но я сталкиваюсь с очевидной проблемой, связанной с тем, как распределять / освобождать объект делегата UiAlertView.

, например

MyAlertViewHandler* alertHandler = [[MyAlertViewHandler alloc] init];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:msg message:nil delegate:alertHandler cancelButtonTitle:TEXT_NEVERMIND otherButtonTitles:TEXT_RESET_PASSWORD,nil];
[alert show];
[alert autorelease];

Там есть очевидная утечка памяти, потому что я выделяю и нигде не освобождаю.

Итак, где я могу «повесить» MyAlertViewHandler, чтобы я мог его освободить, чтобы избежать утечки памяти?

Одна из идей - сообщить вызывающей стороне, что NSObject должен быть освобожден, и передать ответственность обратно UIViewController - но есть ли другой способ?

Надеюсь, мой вопрос достаточно ясен.

1 Ответ

1 голос
/ 31 марта 2011

В вашем методе делегата alertView:didDismissWithButtonIndex: (в вашем MyAlertViewHandler) вы можете просто [self release]; или [self autorelease]; в качестве самой последней команды.

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