gpt4 book ai didi

ios - 使用 CoreMedia 数据类型在 Swift 中扩展

转载 作者:行者123 更新时间:2023-11-28 16:04:57 27 4
gpt4 key购买 nike

从昨天开始,虽然我了解如何在 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)

然后 rate 按预期设置为 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)
}
}

关于ios - 使用 CoreMedia 数据类型在 Swift 中扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40423450/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com