无法从Swift继承NSInputStream(initWithData:unrecognizer selector)

cno*_*oon 9 nsinputstream ios swift

我似乎无法弄清楚我做错了产生以下错误:

2015-02-02 12:48:17.029 InputStreams[14816:221224] -[InputStreams.CustomStream initWithData:]: unrecognized selector sent to instance 0x7fda2e1aac30
Run Code Online (Sandbox Code Playgroud)

这是我的CustomStream子类.

import Foundation

class CustomStream : NSInputStream {
    let streamName = "My Custom Stream"

    override init(data: NSData) {
        super.init(data: data)
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我试图实例化它的一个简单示例:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let stream = CustomStream(data: NSData())
        println("Stream Name: \(stream.streamName)")
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

Xin*_*ng 0

我找到了使用convinenceinit 的解决方案。

class CustomStream : NSInputStream {
    let streamName = "My Custom Stream"
    // var data:NSData!        

    convenience override init(data: NSData) {
        self.init()
        // do inialization.
        // self.data = data 
    }

    convenience init() {
        self.init()
    }
}
Run Code Online (Sandbox Code Playgroud)

老实说,我还没有弄清楚它为什么起作用。我参考类继承和初始化以获取更多信息。如果您对此有任何想法,请发表评论。

另一件事是,它被认为使用起来CFCreateBounderPair比子类更安全。我已经尝试以两种方式成功NSInputStream转换ALAsset为成功。代码可以在此处ALAssetToNSInputStream获得。NSInputStream