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

时间:2015-02-02 20:57:55

标签: ios swift nsinputstream

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

2015-02-02 12:48:17.029 InputStreams[14816:221224] -[InputStreams.CustomStream initWithData:]: unrecognized selector sent to instance 0x7fda2e1aac30

这是我的CustomStream子类。

import Foundation

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

    override init(data: NSData) {
        super.init(data: data)
    }
}

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

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let stream = CustomStream(data: NSData())
        println("Stream Name: \(stream.streamName)")
    }
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我找到了使用convinence init。

的解决方案
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()
    }
}

说实话,我还没弄清楚它为何有效。我指的是Class Inheritance and Initialization以获取更多信息。如果您对此有任何疑问,请发表评论。

还有一件事,使用CFCreateBounderPair而不是子类NSInputStream被认为更安全。我试图成功地以两种方式成功地将ALAsset转换为NSInputStream。代码可在此处ALAssetToNSInputStream获取。