请跟我说,我是新的程序员。 (我说的话可能没有意义)
我正在尝试创建一个inputStream和outPut流,以便我可以使用类中其他地方的JSON对象写入它...
我想知道我是否正确行事。目前,我正在打开 - (id)init {}
中的流 -(id)init{
_isNetworkAvailable = FALSE;
//kCFAllocatorDefault is the same thing as Null
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (__bridge CFStringRef)requestURL, port, &readStream, &writeStream);
NSInputStream *inputStream = (__bridge NSInputStream *)readStream;
NSOutputStream *outputStream = (__bridge NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
//There should really be some checking going on here, but we're going to forget it for now
//Call some checking method
_isNetworkAvailable = TRUE;
return self;
}
我的问题是:这是处理这类事情的正确方法吗?我应该在其他地方声明NSInputStream和NSOutputStream吗?
为什么我必须将我的CFStreams转换为NSStreams?
答案 0 :(得分:0)
通过一些测试,这是创建流的正确方法。 CFStreams被转换为NSStreams,因为NSStreams是obj-c native,并提供更多选项和灵活性。 NSStream实际上是基于CFStream(它是BSD套接字的包装器)。
此代码应该始终以异步方式运行,据我所知,或者您会在运行时看到一些挂起。