Я новичок в какао-прикосновении, и действительно неуправляемые языки все вместе. Хотя я твердо понимаю синтаксис, я задаюсь вопросом, правильно ли я освобождаю объект.
У меня есть вид, который создает объект,
Communication *comm = [[Communication alloc] init];
[comm doSomething];
[comm release];
Я понимаю, что должен уничтожить этот объект, потому что я его выделяю, и он не будет автоматически освобожден.
Я вызываю метод объекта, который выходит на мой сервер и получает информацию. Когда данные возвращаются, они генерируют событие, на которое отвечает мой «диспетчер сообщений». Я не хочу уничтожать объект до тех пор, пока он не вернется обратно с сервера - вот где моя путаница.
- Если я отпущу этот объект сразу после вызова, уничтожит ли он этот объект? (Что я не хочу делать.)
- Как правильно уничтожить этот объект после того, как он сгенерирует событие с данными, которые я жду? Это произошло бы в событии
DataFinishedLoading
на моем comm
объекте. Должен ли он уничтожить себя, и это правильный способ сделать это?
Вид, вызывающий мой объект, по сути, говорит: создайте этот объект, вызовите этот метод и продолжайте свой веселый путь. Его не волнует, что происходит после вызова метода - возвращает ли он информацию или нет. Он просто прослушивает метод для любых данных, которые могут встретиться позже. У меня нет причин зависать от ссылки на объект, так как я никогда не буду использовать один и тот же экземпляр после выполнения вызова - это помимо очистки после себя.