NSOutputStream 自 iOS 8.3 更新后停止工作
Posted
技术标签:
【中文标题】NSOutputStream 自 iOS 8.3 更新后停止工作【英文标题】:NSOutputStream stop working since iOS 8.3 update 【发布时间】:2015-02-19 16:06:14 【问题描述】:为什么在下面的代码中class Test
不接收流事件:
class Test
: NSObject
, NSStreamDelegate
// NSStreamDelegate
func stream(aStream: NSStream, handleEvent eventCode: NSStreamEvent)
// this was never called
override init()
super.init()
let filePath = /*[some valid file path]*/
if let stream = NSOutputStream(toFileAtPath: filePath, append: false)
stream.delegate = self
stream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode) // I've also tried replacing currentRunLoop with mainRunLoop just in case the result was the same
stream.open()
_stream = stream
println("Stream opened \(_stream!.hasSpaceAvailable) \(_stream!.streamStatus.rawValue) \(_stream!.streamError)") // here hasSpaceAvailable is true, stream status is opened and error is nil
deinit
_stream!.close()
func write()
if (_stream!.hasSpaceAvailable)
let data = NSMutableData(length: 10000)
_stream!.write(UnsafePointer<UInt8>(data!.bytes), maxLength: data!.length)
var _stream: NSOutputStream?
该类没有被破坏(我将它作为 ViewController 成员)。难道我做错了什么?我在代码中找不到问题,并且在 ios 8.3、XCode 6.3 发行说明中找不到与我的问题相关的任何内容。我没有在 Objective-C 上尝试过,但很可能会出现同样的问题。
我们非常感谢您的帮助!
【问题讨论】:
建议你用 Obj-C 编写,验证是否有问题,如果有问题,将错误报告发送到 bugreport.apple.com。 8.3 是一个测试版 【参考方案1】:我解决了这个问题,我已经将类设为私有,我猜是因为我设置为流的委托,调用功能看不到它,只是不调用它。
【讨论】:
谢谢!我有同样的问题。在 XCode 6.2 中工作,然后在 6.3 中突然停止工作。以上是关于NSOutputStream 自 iOS 8.3 更新后停止工作的主要内容,如果未能解决你的问题,请参考以下文章
iOS:用于大文件下载的 NSFileHandle 与 NSOutputStream
无法调配 NSOutputStream 的 write:MaxLength: