我负责释放一个UIView的gestureRecognizers在dealloc?

我已经将UIGestureRecognizer附加到UIView。 在dealloc期间释放这个是谁的责任?

特别:

UITapGestureRecognizer *t = [[UITapGestureRecognizer alloc] initWithTarget:self.view action:@selector(tapHandler:)]; [self.view addGestureRecognizer:t]; [t release]; 

所以,self.view目前只有gestureRecognizer保留。

更新我应该更清楚。 我的问题与视图dealloc方法有关。 当视图被释放时,视图的超类是否处理了gestureRecognizer的释放。 我目前认为是这样。

经验法则是,只要你调用allocnew或者copy ,就可以调用release

既然你叫alloc,你的代码不会过度释放或泄漏任何东西。

虽然你可以 autorelease你的手势识别器,我不会因为明确释放对象,在可能的情况下,更好的内存pipe理。 (Autoreleased对象不会释放,直到自动释放池被耗尽。)

你的代码是正确的。

该视图通过[self.view addGestureRecognizer:t]获取手势识别器的所有权。

您可以在创build代码时通过自动释放来清理代码:

 UITapGestureRecognizer *t = [[[UITapGestureRecognizer alloc] initWithTarget:self.view action:@selector(tapHandler:)] autorelease]; [self.view addGestureRecognizer:t]; 

这意味着t所有权在一个地方被处理,从而减less了如果代码被修改而引入问题的可能性。