Med*_*eda 16 cocoa-touch uigesturerecognizer ios
我在想,如果你self在手势识别器的 initWithTarget:action:方法中分配目标,你会导致循环保留吗?由于self将保留识别器,self.gestureRecognizers并且手势识别器也可能保留自身initWithTarget:action.
以下是它的解决方案吗?
__weak VRDrawer* weakSelf = self;
UIGestureRecognizer* tapRec = [[UITapGestureRecognizer alloc] initWithTarget:weakSelf
action:@selector(handleTap:)];
Run Code Online (Sandbox Code Playgroud)
jem*_*ons 20
我完全理解确认缺少文档的东西会让人感到不安.需要注意的重要一点是,通过十多年的惯例,目标 - 行动关系永远不会strong.这是相关的文档.注意部分说:
控制对象不会(也不应该)保留其目标.
"保留......"采用MRC的方式说"持有strong...... 的参考"
鉴于这是此类交互的文档化约定,可以安全地假设,如果UIGestureRecognizer目标 - 动作实现确实保留了对象,那么异常将足够奇怪,以至于它将显示在其文档中.
PS您不必担心引用控件在内存管理环境中保留目标的注释."内存管理"是指Cocoa中的(现在已被删除的)垃圾收集.MRC或ARC都不受内存管理.
| 归档时间: |
|
| 查看次数: |
4000 次 |
| 最近记录: |