Разница между CFArray и NSArray - PullRequest
4 голосов
/ 11 февраля 2012

Я ищу более простой способ управления аудио-буферами на iPhone.В основном я пытаюсь избежать проблем с указателями и подсчетом массивов в C, но не хочу, чтобы их замедляли числовые объекты, такие как NSNumber или NSInteger, которые мне пришлось бы использовать с NSArray.наткнуться на CFArray, который, кажется, может быть хорошим посредником.Я прав в этом предположении?Или я что-то упустил?

Ответы [ 3 ]

11 голосов
/ 11 февраля 2012

Не совсем. CFArray в основном то же самое, что и NSArray, вы даже можете разыграть между ними, это называется бесплатный звонок .

CFArray (и его изменяемый аналог) действительно позволяет вам указать свои собственные функции обратного вызова для сохранения и освобождения объектов (указателей) в вашем массиве, что позволит вам хранить произвольные указатели (не только NSObject с) в массиве и реализовать собственную схему управления памятью, но я сомневаюсь, что это приведет к какому-либо реальному приросту производительности. Для вашего случая использования, вероятно, стоит использовать массивы C.

3 голосов
/ 11 февраля 2012

Если производительность и объем памяти имеют какое-либо значение, что, вероятно, будет связано с обработкой звука в реальном времени, придерживайтесь простых C-массивов и узнайте, как кодировать передачу массива и правильно обращаться к нему.

Вам все равно нужно обрабатывать звук в массивах C, так как API аудио-очереди iOS и аудиоустройства передают аудиоданные с использованием массивов C.

1 голос
/ 12 февраля 2012

Если вам не нравится стиль C и вы хотите использовать какой-то объектно-ориентированный стиль, я бы порекомендовал использовать C ++, например.std :: vector или аналогичный.Не используйте Objective-C для аудио, он не предназначен для обработки сигналов!Obj-C отлично подходит для работы с пользовательским интерфейсом и подключения объектов в системе сигнализации.Любые «реальные» вычисления всегда должны выполняться на языке C или на плоском языке C ++.

...