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