CFArray和NSArray之间的区别

时间:2012-02-11 11:08:00

标签: iphone objective-c c signal-processing

我正在寻找一种更简单的方法来操纵iPhone上的音频缓冲区。主要是我试图避免指针问题和C的数组计数问题,但不希望被NSNrray或NSInteger等数字对象放慢速度,我将不得不与NSArray一起使用。

我遇到过CFArray,看起来它可能是一个很好的中间地带。我在这个假设中是否正确?或者我错过了什么?

3 个答案:

答案 0 :(得分:11)

不是真的。 CFArray基本上与NSArray相同,您甚至可以在两者之间进行投射,这称为toll-free bridging

CFArray(及其可变对应物)允许您指定自己的回调函数来保留和释放数组中的对象(指针),这将允许您存储任意指针(而不仅仅是{{1在数组中并实现自己的内存管理方案,但我怀疑这会导致任何真正的性能提升。对于您的用例,C阵列可能是最佳选择。

答案 1 :(得分:3)

如果性能和内存大小有任何问题,它们可能用于实时音频处理,请坚持使用普通C数组,并学习如何正确编码数组传递和访问。

无论如何,你需要处理C数组中的音频,因为iOS音频队列和音频单元API使用C数组传递音频数据。

答案 2 :(得分:1)

如果你不喜欢C风格,并且想要使用一些需要面向对象的类风格我真的建议使用C ++,例如。 std :: vector或类似的。 不要将Objective-C用于音频,而不是用于信号处理! Obj-C非常适合处理UI和连接信号系统中的对象。任何类型的“实际”计算都应该始终用C或扁平C ++完成。