Не удается создать подкласс NSInputStream из Swift (initWithData: селектор нераспознанного)

Я не могу понять, что я делаю неправильно, чтобы вызвать следующую ошибку:

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 ответ

Я нашел решение, используя convinence в этом.

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()
    }
}

Честно говоря, я не выяснил, почему это работает. Я имею в виду наследование классов и инициализацию для получения дополнительной информации. Пожалуйста, оставьте комментарий, если у вас есть какие-либо идеи по этому поводу.

Еще одна вещь, это считается более безопасным в использовании CFCreateBounderPair а не подкласс NSInputStreamЯ пытался конвертировать ALAsset в NSInputStream успешно в обоих направлениях успешно. Код доступен здесь https://github.com/luowenxing/ALAssetToNSInputStream.

Другие вопросы по тегам