【发布时间】:2013-01-14 19:04:39
【问题描述】:
我在想,如果你在手势识别器的initWithTarget:action:方法中将目标指定为self,你会导致循环保留吗?由于self 将在self.gestureRecognizers 中保留识别器,并且手势识别器也可能在initWithTarget:action 中保留自身。
以下是解决方案吗?
__weak VRDrawer* weakSelf = self;
UIGestureRecognizer* tapRec = [[UITapGestureRecognizer alloc] initWithTarget:weakSelf
action:@selector(handleTap:)];
【问题讨论】:
-
是什么让您认为手势识别器会保留目标?在分配手势识别器的代码之前和之后打印
[self retainCount]以查看它是否更改应该非常简单。 -
@GeoffHackworth: whentouseretaincount.com
-
@GeoffHackworth 当然我不知道它是否确实保留了目标,但由于文档没有提及它,人们应该想知道。
-
@GeoffHackworth 你意识到
retainCount的输出不可靠吧?你也知道不能在ARC下使用吧?__weak表示我正在使用 ARC,以防你想知道... -
@GeoffHackworth,相信我:这个网站是对的——永远不要使用
retainCount,即使不是用于打印线调试。
标签: ios cocoa-touch uigesturerecognizer