gpt4 book ai didi

ios - UIGestureRecognizer 导致循环保留?

转载 作者:技术小花猫 更新时间:2023-10-29 10:08:24 25 4
gpt4 key购买 nike

我在想,如果在手势识别器的initWithTarget:action: 方法中将目标指定为self,会不会造成循环保留?由于 self 将在 self.gestureRecognizers 中保留识别器,并且手势识别器也可能在 initWithTarget:action 中保留 self。

下面会是解决方案吗?

__weak VRDrawer* weakSelf = self;
UIGestureRecognizer* tapRec = [[UITapGestureRecognizer alloc] initWithTarget:weakSelf
action:@selector(handleTap:)];

最佳答案

我完全理解在缺乏文档的情况下确认某些事情会让人感到不安。需要注意的重要一点是,根据十多年的惯例,目标- Action 关系永远不会。这是 the relevant docs .请注意以下部分:

Control objects do not (and should not) retain their targets.

“保留……”在 MRC 中表示“持有对……的 strong 引用”

鉴于这是此类交互的记录约定,可以安全地假设,如果 UIGestureRecognizer 的目标操作实现确实保留了对象,那么异常将足够奇怪,它会出现在它的文档中。


附言您不必担心在内存管理环境中引用控件保留目标的注释。 “内存管理”指的是 Cocoa 中的(现在已经过时的)垃圾收集。 MRC 或 ARC 都不是内存管理的。

关于ios - UIGestureRecognizer 导致循环保留?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com