首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子类化NSInputStream,重写委托?

子类化NSInputStream,重写委托?
EN

Stack Overflow用户
提问于 2016-07-19 21:15:41
回答 1查看 517关注 0票数 0

我已经创建了一个NSInputStream子类,但是当它读取实际数据时,我得到了以下异常。

代码语言:javascript
复制
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -setDelegate: only defined for abstract class.  Define -[EventusCore.FileUploadStream setDelegate:]!'

我无法覆盖NSStream抽象类的以下属性:

代码语言:javascript
复制
unowned(unsafe) public var delegate: NSStreamDelegate?

下面是我从NSInputStream继承的类

代码语言:javascript
复制
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可以做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2016-07-19 23:09:16

找到了覆盖委托变量的合适方法

代码语言:javascript
复制
var localdelegate: NSStreamDelegate?

override var delegate: NSStreamDelegate? {
    set {
        self.localdelegate = newValue
    }
    get {
        return self.localdelegate
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38459743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档