NSOperationQueue, память и GCD;как правильно реализовать? - PullRequest
0 голосов
/ 20 марта 2011

У меня есть несколько простых сомнений относительно NSOperation и GCD, на которые я не нашел ответа в документации.

Первый вопрос связан с управлением памятью:

Я хочу знать, нужно ли мне создавать пул автоиздания для методов, которые я добавлю в NSOperationQueue; аналогично тому, когда вы запускаете метод в другом потоке без NSOperations.

Следующий вопрос: NSOperation заботится о ГКД или это нужно делать вручную?

Спасибо за вашу помощь!

Ответы [ 2 ]

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

Я только что увидел ваш вопрос здесь, и на форумах apple dev есть сообщение, которое вас может заинтересовать. По словам одного из парней из Apple в этой теме, пока вы управляете NSOperation черезNSOperationQueue вам не нужно создавать собственный пул автоматического выпуска, поскольку NSOperationQueue делает это за вас.

Кроме того, документы для NSOperationQueue, очевидно, необходимо обновить / исправить.На устройствах под управлением iOS 4 или более поздней версии NSOperationQueue использует GCD, несмотря на то, что говорится в справочных документах класса.

0 голосов
/ 20 марта 2011

Согласно документации , вы должны создать NSAutoreleasePool в методе main вашей NSOperation.В документации для NSInvocationOperation и NSBlockOperation не указано, создают ли они пул автоматического выпуска, поэтому для безопасности было бы лучше создать его при использовании этих классов тоже.

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

...