我正在向bookViewContainer
我的视图控制器添加一个调用的 UIView,并且我想使用 KVO 检测它的比例何时发生变化。这是我的viewDidLoad
:
- (void)viewDidLoad
{
[super viewDidLoad];
bookViewContainer = [[UIView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:bookViewContainer];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized:)];
[bookViewContainer addGestureRecognizer:tap];
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchRecognized:)];
[bookViewContainer addGestureRecognizer:pinch];
[bookViewContainer addObserver:self forKeyPath:@"transform.scale" options:NSKeyValueObservingOptionNew context:NULL];
}
我的observeValueForKeyPath
:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"%@", object);
}
但是,当我运行该项目时,我立即收到错误消息:
NSConcreteValue 类的实例 0x1d844ca0 已被释放,而键值观察者仍向其注册。观察信息被泄露,甚至可能被错误地附加到其他对象上。在 NSKVODeallocateBreak 上设置断点以在调试器中停止。这是当前的观察信息:(上下文:0x0,属性:0x1d844db0>)
我以前使用过 KVO(但从未使用过transform.scale
),并且视图肯定没有被释放(我使用的是 ARC)。我尝试过使用scale
,但没有任何反应。我究竟做错了什么?