有没有办法使Path不可变?

时间:2019-02-11 13:40:22

标签: android

Path对象带有许多更改它的方法(moveTo()lineTo()cubicTo()arcTo()reset()等)。

在继续传递对象之前,有没有一种方法可以冻结该对象?

在Objective-c中,CGPath的界线是什么?

2 个答案:

答案 0 :(得分:2)

不。不可变是指一旦对象的构造函数完成执行,该实例将无法更改。

不过,如果确实需要,您可以子类Path并添加伪不可变性,但是没有内置的机制。

答案 1 :(得分:0)

不理想,但您所描述问题的替代解决方案是使用构造函数复制原始 Path

Path copy = new Path(originalPath);

然后,您可以将副本传递给另一个线程,而不必担心他们在您阅读原始 Path 时是否更改了它。