Вам нужно выпустить очереди GCD под ARC в iOS 6.0?
Следуя руководству iOS 5 по курсу Пола Хегарти, мы видим этот код в приложении, которое демонстрирует использование GCD. По-видимому, GCD требует освобождения из-за проблем, связанных с многопоточным чтением, несколько непредсказуемым в том, какие объекты по-прежнему необходимы.
dispatch_async(dowloadQueue, ^{
....
// do some stuff
....
});
dispatch_release(dowloadQueue);
Я обновил iOS 6 и XCode 4.5, и я получил Сообщение "ARC запрещает явное освобождение..."
Я не пробовал этот код под iOS5/XCode 4.2
Это просто потому, что ARC стал более умным, и мне больше не нужен выпуск в GCD?
Или я просто неправильно понял?
Ответы
Ответ 1
Когда вы нацеливаете Mountain Lion и iOS 6.0, ARC теперь будет управлять очередями отправки и другими типами GCD для вас. Если вы настроите таргетинг на более ранние версии OS X или iOS, вам все равно придется явно сохранять и выпускать типы GCD (не только по соображениям безопасности потоков, в противном случае вы будете утечка памяти), но это будет выполняться для вас, если вы используете только таргетинг на новую ОС версии.
Вот почему вы видите такую ошибку компилятора в ARC при таргетинге на iOS 6.0.