【问题标题】:Difference between CFArray and NSArrayCFArray 和 NSArray 的区别
【发布时间】:2012-02-11 11:07:59
【问题描述】:

我正在寻找一种更简单的方法来操作 iPhone 上的音频缓冲区。主要是我试图避免 C 中的指针问题和数组计数问题,但不想被数字对象(如 NSNumber 或 NSInteger)拖慢,我必须与 NSArray 一起使用。

我遇到过 CFArray,它似乎是一个不错的中间地带。我在这个假设中正确吗?还是我错过了什么?

【问题讨论】:

    标签: iphone objective-c c signal-processing


    【解决方案1】:

    不是真的。 CFArray与NSArray基本相同,甚至可以在两者之间转换,这叫toll-free bridging。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-23
          • 1970-01-01
          • 2016-02-18
          • 2012-10-01
          • 2010-12-08
          • 1970-01-01
          相关资源
          最近更新 更多