Почему AVFoundation от Apple позволяет абонентам проходить в очередях? - PullRequest
0 голосов
/ 04 ноября 2018

Класс AVCaptureVideoDataOutput имеет метод, который принимает в очередь.

- (void)setSampleBufferDelegate:(id<AVCaptureVideoDataOutputSampleBufferDelegate>)sampleBufferDelegate 
                          queue:(dispatch_queue_t)sampleBufferCallbackQueue;

AVAssetWriterInput также имеет аналогичный метод с очередью в качестве параметра.

Почему API позволяет абонентам проходить в очереди? По принципу инкапсуляции я думаю, что очередь, в которой вызывается код, должна быть непрозрачной для вызывающей стороны.

Одним из преимуществ будет то, что вызывающая сторона может повторно использовать одну и ту же очередь для нескольких целей, экономя память. (Это будет иметь другие побочные эффекты?)

Недостатком было бы то, что вызывающая сторона могла передавать в несерийные очереди или ошибочные данные.

В альтернативном подходе AVFoundation поддерживает свои собственные очереди под капотом.

Какие преимущества имеет этот API перед альтернативой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...