2016-07-19 15 views
0

私はNSInputStreamサブクラスを作成しましたが、実際のデータを読み込むと次の例外が発生します。デリゲートをオーバーライドする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) { 

    } 

} 

から継承私のクラスは、私が取得していますエラーです: enter image description here

私は何をしていますか? 違う?これはSwiftを使っても可能ですか?デリゲート変数を上書きするための適切な方法を見つけた

+0

サブクラスNSInputStreamは(ここでは、お気に入りswearword)のようです。たとえば、http://blog.bjhomer.com/2011/04/subclassing-nsinputstream.html(Objective-Cについてですが、問題については説明しています)またはhttp://www.openradar.me/19809067を参照してください。 –

+0

誤字脱字をありがとう。このblogpostはすでに読んでいますが、この特定の問題を解決する方法についての情報はありませんでした。 :( –

答えて

1

var localdelegate: NSStreamDelegate? 

override var delegate: NSStreamDelegate? { 
    set { 
     self.localdelegate = newValue 
    } 
    get { 
     return self.localdelegate 
    } 
} 
関連する問題