2012-10-20 47 views
0

我有一个对象叫做GraphicPath,它存储了填充颜色的CGMutablePathUIColor值。然后我有一个名为graphicNSMutableArray,其中存储了一系列最终包含在另一个类的drawRect中绘制的图像的这些对象。在NSMutableArray中存储指向另一个对象的指针并更改它

我还有一个弹出的小模块,让用户将颜色更改为该图形。所以我有一个单独的NSMutableArray,用于跟踪与该模块接口的所有图形中的所有颜色。我们称之为colors。我想这样做,只要我改变colorsGraphicPath中的对应颜色值也会改变(所以我不必进入GraphicPaths的数组中找到它来改变它)。

所以很明显UIColor属性在每个GraphicPath属性都需要有一个指向颜色的指针colors。我对如何在数组colors中保留一个UIColor对象指针感到困惑,并且只要我更改此值就可以使其变得如此,GraphicPath中的相应值也会发生更改。

+0

因此,您有'GraphicPath'对象具有'UIColor'属性和'UIColor'可变数组。你想要在可变数组中改变对象,让它们也在'GraphicPath'中改变?但是'UIColor'不可变,所以对象不会被改变。也许你的意思是,当对象添加到颜色数组中或从颜色数组中删除时,每个'GraphicPath'应该确保它的颜色仍然在数组中?我真的很遗憾你的颜色数组发生了什么特定的变化,以及如何将这种变化传播回路径对象。你可以扩展吗? –

+0

如果用户对某种颜色进行了改变,比如改变了图形中帽子的颜色,那么该改变将在该颜色数组中更新为存储帽子颜色的索引。然后,当图形重绘时,所有存储帽子颜色的GraphicPath也将被更改,因为它们引用MutableArray中的帽子颜色的地址。 –

+0

我看到了,所以当用户用新颜色替换索引3处的颜色时,所有具有存储索引3处替换颜色的'color'属性的'GraphicPath'应自动开始引用索引3处的替换颜色?看起来解决方案可能涉及使颜色路径不拥有颜色,而是通过某个键或名称或在这种情况下引用索引;当它来绘制他们检索适当的键/名称/指数的颜色... –

回答

0

正如在评论中所说的,您需要使您的GraphicPath对象的UIColor字段指向colors数组中的对应对象。这样,更改colors数组中的对象将导致您的自定义对象的UIColor字段发生“变化”。 例如,如果您有:

UIColor *color1, color2, color3, etc; 
NSMutableArray *colors = [[NSMutableArray alloc] initWithObjects:color1, color2, color3, nil]; 

NSMutableDictionary *graphicDictionary = [[NSMutableDictionary alloc] init]; 
[graphicDictionary setObject:somePathObject forKey:@"path"] 
[graphicDictionary setObject:[colors objectAtIndex:0] forKey:@"color"]; 
GraphicPath *firstGraphicPathObject = [[GraphicPath alloc] initWithDitionary:graphicDictionary]; 

所以下次如果你改变颜色的对象之一,你会改变颜色#变量,所以你会改变的价值,通过你的对象字段中返回。 就像我想的那样。

相关问题