0
所以我有一个[NSMutableArray * paths]包含对应于屏幕上绘制的每个单独路径的UIBezierPath。我也有另一个NSMutable阵列颜色,其中包含路径的相应颜色。我遇到的问题是,虽然两个数组是变异的,我可以看到两者的数量都增加了,但下面的drawRect方法似乎只能绘制数组中的最后一个路径。 我已经搜遍了很多问题,并且基于迄今为止我读到的内容,这个问题似乎让我们看到了新手,而且主要是因为类型不匹配。我甚至试图指出回报,这是徒劳的。 下面是从的drawRect无法在NSMutable数组中访问UIBezierPath
int cnt = paths.count;
if (cnt != 0)
{
for(int i = 0; i < cnt; i++)
{
NSLog(@"Drawing path:%i", i);
UIColor *color;
color = [colors objectAtIndex:i];
[color setStroke];
UIBezierPath *path = [paths objectAtIndex:i];
path.lineWidth = 2;
[path stroke];
}
}
我每次调用[自我setNeedsDisplay]它抹了我的整个屏幕上的时间
我的代码。
我是正确的假设,我不处理我的
UIBezierPath *path = [paths objectAtIndex:i];
呢?
非常感谢你,并提前。
UPDATE:
我是通过一些代码翻找,现在它几乎看起来像有是ARC被释放我NSMutable数组的内容另一种可能性。我试着做下面的事情,并得到一个编译器错误。
[paths retain];
嗯,是的,讲求实际的人,我,我意识到,从某种意义上说,我没有必要使用NSMutable阵列我正在尝试做什么。在我需要实现“撤消功能”之前,我将坚持使用三个UIBezierPath(红色,蓝色和绿色)和一个指向三者之一的currentPath指针。这样,在绘制时,我可以简单地检查每个路径是否为零,否则绘制路径。为了使内存更简单,我正在考虑实现一个过滤器,以便只有在自上次渲染后更改路径时才会重绘路径。 – Khanal 2012-04-02 01:17:40