Освобождение памяти класса, вызывающего асинхронный метод

У меня есть такой код,

ClassA *reference = [[ClassA alloc] init];
reference.delegate = self;
[reference callAsynchMethod];

Здесь я вызываю асинхронный метод. Выполнение занимает около 4-5 секунд. Итак, как мне освободить память ClassA? Если я вызову релиз или автоматический релиз, произойдет сбой.

Спасибо


person Dilshan    schedule 15.11.2010    source источник


Ответы (1)


Возможно, вы можете заставить объект сохранять себя в начале callAsynchMethod, а затем освобождать себя после того, как он вызовет (я полагаю) метод делегата, который сигнализирует об окончании асинхронной работы? Затем в приведенном выше коде вы можете немедленно освободить его.

Изменить

Если вы говорите о NSURLConnection, то вы должны использовать переменную экземпляра для ссылки на соединение и передать ей release в реализации dealloc вашего объекта.

person paulbailey    schedule 15.11.2010
comment
Я пытаюсь получить URL-адрес и проанализировать результаты. Таким образом, callAsynchMethod вызовет 2 метода обратного вызова, либо переданные, либо не пройденные. Итак, после этого вызова метода я попытался выпустить или автоматически выпустить, где он падает. Как я могу сохранить его и выпустить позже? - person Dilshan; 15.11.2010