繁体   English   中英

使用CoreMedia数据类型在Swift中进行扩展

[英]Extension in Swift with CoreMedia data types

从昨天开始,尽管我了解如何在Swift中编写扩展,但是现在我不确定。 我有CMTimebase类的简单扩展。

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

而且我想知道为什么这不起作用,因为当我执行print(timebase)时,调用后速率设置为0.0。 当我调用时真正有趣的是:

CMTimebaseSetRate(timebase, 1.0)

然后将速率设置为预期的1.0。 我认为问题不仅与CoreMedia有关,或者也许我不理解扩展背后的一些基本概念。 如果您知道如何更正我的扩展名,请提供帮助。 我正在尝试定位Swift 3。

好。 从我这真的是愚蠢的错误。 我要休息 扩展名中有错字。 它应该代替rate,newValue。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM