我正在向我的视图控制器添加一个名为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
,但后来没有任何反应。我做错了什么?
答案 0 :(得分:0)
解决方案:我需要自己使用transform
,而不是它的属性。完成工作!