4

iOS/MacOSX 中有几个流函数和/或类。如果我想实现自己的自定义流,即提供或使用顺序字节数据的某个对象,以下哪个 API 最适合使用?

  • Unix文件描述符(int)
    • 没有办法实现自定义文件描述符?
  • 文件*
    • 使用 funopen 实现自己的流。
    • C 级 API,实际使用这个的 Cocoa 并不多。例如,不能将此桥接到 NSInputStream。
    • 数据可以被你自己的代码消费
  • CGDataProviderRef , CGDataConsumerRef
    • 允许顺序和直接访问读取实现。
    • 由 CoreGraphics 使用,但仅此而已。
    • 无法从您自己的代码中使用数据
  • NSInputStream , NSOutputStream
    • 被很多 Cocoa 使用,例如 XML、JSON 解析
    • Doc 允许子类化,但实际上由于异步使用,子类化很棘手。
    • 可以从您自己的代码中使用数据

看起来 NSInputStream/NSOutputStream 是实现您自己的流的理想“可可”方式。但是我不确定如何实现对 App Store 友好,即不覆盖隐藏方法(参见例如http://bjhomer.blogspot.com.au/2011/04/subclassing-nsinputstream.html),NSInputStream 的子类,或者:

(a) 制作仅同步流(我如何知道特定的 Cocoa API 是否会异步使用流,因此不适用于我的仅同步流?)或

(b) 制作异步流?

4

0 回答 0