在NSMutableArray中将指针存储到另一个对象并更改它

时间:2012-10-20 08:55:58

标签: iphone ios cocoa-touch pointers nsmutablearray

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

我还弹出一个小模块,让用户可以将颜色更改为此图形。所以我有一个单独的NSMutableArray跟踪所述图形中与该模块接口的所有颜色。我们称之为colors。每当我对colors进行更改时,我都希望这样做,GraphicPath中相应的颜色值也会发生变化(所以我不必进入{{1}的数组找到它来改变它)。

显然,每个GraphicPaths属性中的UIColor属性需要有一个指向GraphicPath中颜色的指针。我对如何在数组colors中保留UIColor对象指针感到困惑,并且每当我更改此值时都会这样做,colors中的相应值也会发生变化。

1 个答案:

答案 0 :(得分: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];

接下来,如果要更改其中一个颜色的对象,则会更改颜色#变量,因此您将更改对象字段返回的值。 我猜是这样的。