GCD dispatch_queue_t as ivar - управление памятью? - PullRequest
2 голосов
/ 27 июня 2011

Я создаю очередь отправки GCD для асинхронного создания и сохранения новых управляемых объектов.

Во-первых, будет ли необходимо создавать это как переменную экземпляра?Скажем, у меня есть (гипотетический) метод -newObjectWithProperties:, и я создал очередь локально с меткой "com.myapp.coredata".В следующий раз, когда я вызову -newObjectWithProperties: и заново создаю очередь с той же меткой, НО предыдущее фоновое задание в этой очереди все еще не завершено, будет ли локальное «воссоздание» этой очереди соответствовать той же самой фактической очереди?Или это исключение?Если последнее, то я предполагаю, что для очереди потребуется переменная экземпляра для всего класса.

Предполагая, что требуется ивар, как для этого следует управлять памятью?Я предполагаю, что я бы использовал dispatch_queue_create() в -init, а затем просто позвонил бы dispatch_release() в -dealloc?

1 Ответ

0 голосов
/ 27 июня 2011

Я делаю что-то подобное, но создаю очередь один раз и использую эту очередь в любое время, когда мне нужно отправить фоновое задание.Очередь создается в первый раз, когда это необходимо (не в init), и сохраняется в ivar, затем уничтожается в dealloc.

...