我正在研究构建DFD构建器的原型。这将有一个用于绘制DFD的不同对象的调色板。 (矩形框,箭头,椭圆,圆圈)。
我最初计划使用普通的CAShapeLayer创建对象并将其添加到superview的图层(借助CGPaths或UIBezierPath),这样我就可以减少应用程序的内存占用量。 / p>
然后我意识到使用CAShapeLayer并直接在超级视图层中添加它们使我能够处理触摸并使用命中测试来查找用户交互的CAShapeLayer。
所以我打算创建一个由CAShapeLayer支持的Custom UIView,这样我就不用担心处理触摸并发现用户交互的特定对象。
这种方法比使用普通的CAShapeLayer更好吗?如果是,请说明原因?
更新
@matt我做了内存测试,结果显示使用CAShapeLayer会节省内存
答案 0 :(得分:4)
这两种方法都不是更好的"。没有视图就不能存在图层,您可以像测试视图一样对图层进行测试。如果你有多个可点击的绘制对象,那么如果它们都是单独的层,它将是最简单的,这样你就不必计算被点击的那个;但这并不意味着他们都需要分开观点。
对于"记忆足迹",你正在过早地进行优化,这是一个主要的罪恶。你有没有实际的证据表明100层(让我们说)占用更少的内存占用空间"超过100次观看?除非你这样做,否则你不能将其作为决策标准。