在iOS 5中创建和使用流

时间:2012-07-31 23:55:30

标签: ios json

请跟我说,我是新的程序员。 (我说的话可能没有意义)

我正在尝试创建一个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?

1 个答案:

答案 0 :(得分:0)

通过一些测试,这是创建流的正确方法。 CFStreams被转换为NSStreams,因为NSStreams是obj-c native,并提供更多选项和灵活性。 NSStream实际上是基于CFStream(它是BSD套接字的包装器)。

此代码应该始终以异步方式运行,据我所知,或者您会在运行时看到一些挂起。