1
私はカメラアプリを構築していますが、現在の露出時間をユーザーに公開しようとしています。この値は手動で設定するまで常に変化するので、kvoを使用して値をユーザーにストリーミングする必要があります。私はISO
でこれを成功させ、exposureDuration
への変更を観察できますが、新しい値をCMTime
オブジェクトに強制することはできません(これは、exposureDurationと同じです)。これは私がリンゴを持つファイルする必要があり、正当なバグ私が何か間違ったことキー値観測露出時間
override init() {
super.init()
captureDevice = self.selectCamera()
captureDevice?.addObserver(self, forKeyPath: "ISO", options: .New, context: &isoContext)
captureDevice?.addObserver(self, forKeyPath: "exposureDuration", options: .New, context: &shutterContext)
}
deinit {
captureDevice?.removeObserver(self, forKeyPath: "ISO")
captureDevice?.removeObserver(self, forKeyPath: "exposureDuration")
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
let newValue = change?[NSKeyValueChangeNewKey]
if context == &isoContext {
store.iso.value = newValue as! Float
} else if context == &shutterContext {
// The app crashes at this line.
// Thread 1: EXC_BREAKPOINT (code=1, subcode=0x100091670)
// newValue is "AnyObject" in the debug area
store.shutterSpeed.value = newValue as! CMTime
}
}
アム、または次のとおりです。以下は、私はこれを試してみて、達成するために使用しているコードはありますか?
どのようにISOに対して行っていますか? – Nil
@Nilこの例では見ることができますが、通常のKVOは期待通りに動作します。 – Mike