Со вчерашнего дня, хотя я понимаю, как писать расширения в Swift, но теперь я не уверен. У меня есть простое расширение для класса CMTimebase.Расширение в Swift с типами данных CoreMedia
extension CMTimebase {
class func instance(withMasterClock masterClock: CMClock) -> CMTimebase {
var timebase: CMTimebase? = nil
CMTimebaseCreateWithMasterClock(kCFAllocatorDefault, masterClock, &timebase)
return timebase!
}
var rate: Float64 {
set {
CMTimebaseSetRate(self, rate)
print(self)
}
get {
return CMTimebaseGetRate(self)
}
}
var seconds: Float64 {
return CMTimeGetSeconds(CMTimebaseGetTime(self))
}
}
В моем коде я использую его так:
let timebase = CMTimebase.instance(withMasterClock:captureSession.masterClock)
timebase.rate = 1.0
И мне интересно, почему это не работает, потому что, когда я делаю печати (развертку) ставка установлена в 0.0 после вызова. Что действительно смешно, когда я вызываю:
CMTimebaseSetRate(timebase, 1.0)
Тогда значение скорости равно 1.0, как ожидалось. Я думаю, что проблема не связана только с CoreMedia или, может быть, я не понимаю некоторые фундаментальные понятия, лежащие в основе расширения. Пожалуйста, помогите, если вы знаете, как исправить расширение. Я пытаюсь нацелить Swift 3.