NSInputStream *
和之间的区别CFReadStreamRef
似乎是第一个是客观的 C 对象,而第二个是本机结构。然而,它们是免费桥接的。
我想实现一个基于网络流的程序。
[NSStream getStreamsToHost:port:inputStream:outputStream:]产生
NSInputStream *
和NSOutputStream *
. 但是,在 iOS 上,此方法不可用。因此,必须在 iOS 上使用CFStreamCreatePairWithSocketToHost 。
CFReadStreamRef readStream; CFWriteStreamRef writeStream; CFStreamCreatePairWithSocketToHost( kCFAllocatorDefault, host, port, &readStream, &writeStream); NSInputStream *read = (__bridge NSInputStream *)readStream; NSOutputStream *write = (__bridge NSOutputStream *)writeStream;
设置流属性时,使用时并非所有属性都可用
NSInputStream *
。特别是kCFStreamPropertyShouldCloseNativeSocket
确保在关闭相应的流时也关闭套接字会很有趣。我是否必须将 转换
NSInputStream *
为 aCFReadStreamRef
才能设置此属性,然后还原转换以设置此类属性?...
NSInputStream *
似乎有多个缺点。它的唯一优势真的是我可以提供它自己的子类,而在这种情况下我不能这样做CFReadStreamRef
吗?什么时候应该使用哪种方法?