假设我有一个名为ColorHolder
的对象,其中一个属性是UIColor
值。假设我还有NSMutableArray
存储了一些UIColors
,我们称之为colors
。我使用数组中的值初始化ColorHolder
对象,如下所示:
[[ColorHolder alloc] initWithColor: [self.colors objectAtIndex:5]];
现在在程序后面的某个时刻,用户在同一个索引5处更改了colors
中的值。我想要的是我在上面初始化的ColorHolder
对象,因为它的颜色值为当colors
NSMutableArray
中的相应值发生变化时也会发生变化。如何以这种方式设置指针以便它发生?
答案 0 :(得分:2)
您设置字体的视图(以及FontHolder无论做什么)都不是“观察”字体数组的更改,而且UIFont类是不可变的。
您需要使用NSNotificationCenter添加一个监视此数组的观察类,并向感兴趣的视图(和/或FontHolder)发送通知。
这是一种经典的观察者模式。
http://blog.csdn.net/dadalan/article/details/4240733
上述博客不是代码的复制和粘贴答案,但我提供了有关该模式的信息。
此外,如果您真的不需要更新视图,只要用户对其进行更改,您就可以简单地告诉FontHolder从字体数组中刷新自己。如果只有一个观察者是实现观察者模式的廉价方法。