崩溃删除keyValue观察者(使用Apple SquareCam示例代码)

No *_*ing 1 key-value-observing ios ios5

我正在使用Apple的SquareCam演示中的viewController类.我没有更改代码,除了创建一个UIView,在示例中通过storyboard/IB设置.还要在构建设置中指定从ARC中排除.

代码使用KVO做一些动画我在removeObserver下面的行上遇到了崩溃.

我可以轻松地解决这个问题,而不是使用KVO,但我想了解这个问题 - 而且KVO更好.有时代码示例中的KVO很难遵循.例如:在下面的代码片段中,keyPathsaddObserver/removeObserver电话是不同的(在苹果的代码).它们不应该是一样的吗?

无论如何......如果有人有X光视力

- (void)teardownAVCapture
{
[videoDataOutput release];
if (videoDataOutputQueue)
    dispatch_release(videoDataOutputQueue);

    // CRASH HERE
[stillImageOutput removeObserver:self forKeyPath:@"isCapturingStillImage"];

[stillImageOutput release];
[previewLayer removeFromSuperlayer];
[previewLayer release];
}
Run Code Online (Sandbox Code Playgroud)

//观察者在这里设置:

    stillImageOutput = [AVCaptureStillImageOutput new];
[stillImageOutput addObserver:self forKeyPath:@"capturingStillImage" options:NSKeyValueObservingOptionNew context:AVCaptureStillImageIsCapturingStillImageContext];
Run Code Online (Sandbox Code Playgroud)

Tro*_*inh 6

我在尝试重拍图片时也遇到了这个问题,我的临时解决方案是rem代码

[stillImageOutput removeObserver:self forKeyPath:@"isCapturingStillImage"];
Run Code Online (Sandbox Code Playgroud)

并尝试打电话

[session stopRunning]
Run Code Online (Sandbox Code Playgroud)