0

我正在向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,但没有任何反应。我究竟做错了什么?

4

1 回答 1

0

解决方案:我需要单独使用transform它,而不是它的一个属性。任务完成!

于 2013-04-29T10:17:00.720 回答