Как я могу получить уведомление о завершении задачи dispatch_async?

VLBCameraView - это библиотека, использующая AVFoundation для съемки.

В представлении отображается предварительный просмотр, который затем можно вызвать методом VLBCameraView # takePicture, чтобы сделать снимок.

Поставляется с CocoaPods.

11
задан Jonah 31 July 2010 в 16:56
поделиться

1 ответ

Из документации:

ОБРАТНЫЕ ВЫЗОВЫ ЗАВЕРШЕНИЯ

Обратные вызовы завершения могут быть выполнены через вложенные вызовы функции dispatch_async(). Важно важно помнить о сохранении очереди назначения перед первым вызовом dispatch_async() и об освобождении этой очереди в конце обратного вызова завершения, чтобы убедиться, что очередь назначения не будет деаллоцирована, пока ожидается обратный вызов завершения. Например:

 void
 async_read(object_t obj,
         void *where, size_t bytes,
         dispatch_queue_t destination_queue,
         void (^reply_block)(ssize_t r, int err))
 {
         // There are better ways of doing async I/O.
         // This is just an example of nested blocks.

         dispatch_retain(destination_queue);

         dispatch_async(obj->queue, ^{
                 ssize_t r = read(obj->fd, where, bytes);
                 int err = errno;

                 dispatch_async(destination_queue, ^{
                         reply_block(r, err);
                 });
                 dispatch_release(destination_queue);
         });
 }

Source

15
ответ дан 3 December 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: