这是来自documentation of UITouch的引用:


  触摸对象会在整个多触摸序列中持续存在。决不
  处理事件时保留触摸对象。如果你需要保持
  有关从一个触摸阶段到另一个触摸阶段的触摸的信息,请将其复制
  信息来自触摸。


接下来是Event Handling Guide for UIKit Apps中的另一个:


  清单9-1显示了TouchableView类的主要实现
  及其触摸处理方法。每种方法都会遍历
  触摸并执行所需的操作。 touchViews字典
  使用UITouch对象作为键来检索子视图
  在屏幕上进行操作。


class TouchableView: UIView {
    var touchViews = [UITouch:TouchSpotView]()
    ...
}


显然,他们使用UITouch实例作为字典键违反了自己的规则。

那么这有什么用呢?是否应该保留UITouch实例以进行复杂的手势跟踪?

最佳答案

苹果开发商并不完美,是的,我同意他们违反自己的准则。类似地,Apple表示您不应该继承集合视图的子类,但是我之前这样做是为了添加一些次要的实用程序函数,而没有不利影响。我想说这应该放在类似的类别中“不要做”。如果他们说不要这样做,则后果自负。但是实际上,既然创建代理NSTouch记录是如此容易,那么为什么不这样做呢?由于类似的原因,我最终将我的collection view实用程序功能“分解”到另一个实用程序类中,只是因为我肛门肛门并且想确保自己安全;)

关于ios - 保留UITouch:允许还是不允许?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45067293/

10-10 21:01