Не удается создать подкласс 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.