NSInputStream *
との違いはCFReadStreamRef
、最初のオブジェクトがObjective Cオブジェクトであり、2番目のオブジェクトがネイティブ構造体であるということです。それにもかかわらず、それらは無料のブリッジです。
ネットワークストリームに基づいたプログラムを実装したい。
[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 *
からCFReadStreamRef
、変換を元に戻して、このようなプロパティを設定する必要がありますか?..。
には複数のNSInputStream *
欠点があるようです。その場合、私はそれを提供することはできませんが、私がそれの独自のサブクラスを提供できることは本当に唯一の利点CFReadStreamRef
ですか?どの方法をいつ使用する必要がありますか?