2016-11-04 5 views
0

Со вчерашнего дня, хотя я понимаю, как писать расширения в 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.

ответ

1

Ok. Это действительно глупая ошибка с моей стороны. Мне нужен перерыв. В расширении есть опечатка. Это должно быть вместо ставки newValue.

var rate: Float64 { 
    set { 
     // CMTimebaseSetRate(self, rate) 
     // Line below is correct 
     CMTimebaseSetRate(self, newValue) 
    } 
    get { 
     return CMTimebaseGetRate(self) 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^