从UIView中删除观察者

时间:2014-11-11 10:26:14

标签: ios objective-c iphone uiview

我有一个观察者在UIView上调整UIWebView大小改变时(例如在设备旋转时):

[[self view] addObserver:self forKeyPath:@"frame" options:0 context:nil];

当视图被解除时,我自然需要删除此观察者(否则会有异常)。但是我会在哪里这样做?我在dealloc或者viewDidDisappear中尝试过,但是当我这样做时我得到了一个SIGABRT。

- (void) viewDidDisappear:(BOOL)animated {       
    NSLog(@"Is moving %d - %d", self.isMovingFromParentViewController, self.isBeingDismissed);
    [[self view] removeObserver:self forKeyPath:@"frame"];
}

我之前尝试过在ViewWillDisappear上移动它,但结果相同。

此外,我对这个后来的解决方案并不完全满意(即使它可以工作),因为当视图暂时不在视图范围内时(例如使用pageViewController)它也可能会卸载,尽管这不是什么大不了的事对我而言。

将问题跟踪到这个项目并尝试解决它已经花了我一天的时间,所以任何建议都非常感谢!

0 个答案:

没有答案