我正在使用 Apple 的 SquareCam 演示中的 viewController 类。除了创建一个 UIView 之外,我没有更改代码,该示例在示例中是通过情节提要/IB 设置的。还要在构建设置中指定从 ARC 中排除。
该代码使用 KVO 做一些动画,我在removeObserver
下面的行中遇到了崩溃。
我可以轻松解决这个问题而不使用 KVO,但我想了解这个问题 - 并且更好地了解 KVO。有时代码示例中的 KVO 很难遵循。例如:在下面的代码片段中,keyPaths
调用addObserver/removeObserver
的 是不同的(在 Apple 的代码中)。他们不应该是一样的吗?
无论如何...如果有人有 X 光视力
- (void)teardownAVCapture
{
[videoDataOutput release];
if (videoDataOutputQueue)
dispatch_release(videoDataOutputQueue);
// CRASH HERE
[stillImageOutput removeObserver:self forKeyPath:@"isCapturingStillImage"];
[stillImageOutput release];
[previewLayer removeFromSuperlayer];
[previewLayer release];
}
// 这里设置了观察者:
stillImageOutput = [AVCaptureStillImageOutput new];
[stillImageOutput addObserver:self forKeyPath:@"capturingStillImage" options:NSKeyValueObservingOptionNew context:AVCaptureStillImageIsCapturingStillImageContext];