【发布时间】:2016-07-19 13:15:41
【问题描述】:
我创建了一个 NSInputStream 子类,但是当它读取实际数据时,我得到了以下异常。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -setDelegate: only defined for abstract class. Define -[EventusCore.FileUploadStream setDelegate:]!'
我无法覆盖 NSStream 抽象类的以下属性:
unowned(unsafe) public var delegate: NSStreamDelegate?
这是我继承自 NSInputStream 的类
class InputStream : NSInputStream {
private var currentStatus: NSStreamStatus = .Closed
// override var delegate: NSStreamDelegate?
weak var delegate: NSStreamDelegate?
override func open() {
self.currentStatus = .Open
}
override func close() {
self.currentStatus = .Closed
}
override var streamStatus: NSStreamStatus {
return self.currentStatus
}
override var hasBytesAvailable: Bool {
return self.currentStatus == .Open
}
// MARK: NSInputStream and CFReadStream abstract method overrides
override func scheduleInRunLoop(aRunLoop: NSRunLoop, forMode mode: String) {
}
override func removeFromRunLoop(aRunLoop: NSRunLoop, forMode mode: String) {
}
}
我做错了什么?使用 Swift 是否有可能?
【问题讨论】:
-
子类化 NSInputStream 似乎是一个(你最喜欢的脏话)。参见例如blog.bjhomer.com/2011/04/subclassing-nsinputstream.html(关于Objective-C,但描述了问题)或openradar.me/19809067。
-
感谢错字提醒。我已经阅读了这篇博文,但没有任何关于如何解决这个特定问题的信息。 :(
标签: ios swift delegates subclass nsinputstream