将 CFReadStreamRef 转换/转换为 NSInputStream (iOS5)
Posted
技术标签:
【中文标题】将 CFReadStreamRef 转换/转换为 NSInputStream (iOS5)【英文标题】:Convert/cast CFReadStreamRef to NSInputStream (iOS5) 【发布时间】:2011-06-17 11:29:25 【问题描述】:我正在尝试将我的应用程序移植到 ios5。我正在通过 CFSockets 使用与服务器的 TCP 连接。我现在的问题是从 CFReadStreamRef 到 NSInputStream 的转换(转换)(与写入相同)。使用 iOS4,我可以使用免费桥接,但使用 iOS5 的自动引用计数,这不再是可能的了。这是我得到的:
error: Automatic Reference Counting Issue: Cast to 'NSInputStream *' of a non-Objective-C to an Objective-C pointer is disallowed with Automatic Reference Counting
代码:
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStringRef strRef = CFStringCreateWithCString(NULL,
[urlStr UTF8String],
NSUTF8StringEncoding);
CFStreamCreatePairWithSocketToHost(NULL,
strRef,
4444,
&readStream,
&writeStream);
NSInputStream *iStream = (NSInputStream *)readStream;
NSOutputStream *oStream = (NSOutputStream *)writeStream;
还有其他方法可以将套接字输出/输入管道传输到 NSStream 吗? 感谢您的任何提示!
【问题讨论】:
【参考方案1】:管理免费桥接非常清楚地表明您应该使用这样的东西:
NSInputStream *iStream = objc_unretainedObject(readStream);
【讨论】:
那行得通。谢谢你。后来发现苹果“Programming With ARC Release Notes”…… 我的输出流仍然无法正常工作 :S 你有没有做更多的事情让它工作?以上是关于将 CFReadStreamRef 转换/转换为 NSInputStream (iOS5)的主要内容,如果未能解决你的问题,请参考以下文章
将rowdatapacket转换为数组,如何将mysql node.js api rowdatapacket转换为数组,将字符串转换为数组