Аргумент типа «CMSampleBufferRef» (он же «struct opaqueCMSampleBuffer *») не является ни объектом Objective-C, ни типом блока - PullRequest
0 голосов
/ 29 января 2019

Я хочу сохранить CMSampleBufferRef в изменяемом массиве, для которого я пытаюсь использовать приведенный ниже код

NSMutableArray<CMSampleBufferRef> *buffers;

Но я получаю эту ошибку

Type argument 'CMSampleBufferRef' (aka 'struct opaqueCMSampleBuffer *') is neither an Objective-C object nor a block type

В Swift мы можемнапишите так, все работает хорошо

 var buffers = [CMSampleBuffer]()

Я хочу знать, как записать это в Objective-C и сохранить буферы сэмплов в изменяемом массиве.Предложите мне решение для этого.

1 Ответ

0 голосов
/ 29 января 2019
// defining the mutable array
NSMutableArray* sampleBuffers = [[NSMutableArray alloc] init];

// adding a sample buffer:
CMSampleBufferRef sampleBuffer = (...)
[sampleBuffers addObject:(__bridge id)sampleBuffer];

Примечание. Добавление буфера семплов в массив приведет к увеличению счетчика буфера;счетчик будет уменьшен при удалении буфера из массива.Убедитесь, что источник ваших примеров буферов в порядке с сохранением буферов в течение длительного периода времени (некоторые пулы буферов могут не понравиться).

...