如何通知目标c中其他对象的变化

时间:2012-10-21 01:27:30

标签: iphone objective-c ios cocoa-touch

假设我有一个名为ColorHolder的对象,其中一个属性是UIColor值。假设我还有NSMutableArray存储了一些UIColors,我们称之为colors。我使用数组中的值初始化ColorHolder对象,如下所示:

[[ColorHolder alloc] initWithColor: [self.colors objectAtIndex:5]];

现在在程序后面的某个时刻,用户在同一个索引5处更改了colors中的值。我想要的是我在上面初始化的ColorHolder对象,因为它的颜色值为当colors NSMutableArray中的相应值发生变化时也会发生变化。如何以这种方式设置指针以便它发生?

1 个答案:

答案 0 :(得分:2)

您设置字体的视图(以及FontHolder无论做什么)都不是“观察”字体数组的更改,而且UIFont类是不可变的。

您需要使用NSNotificationCenter添加一个监视此数组的观察类,并向感兴趣的视图(和/或FontHolder)发送通知。

这是一种经典的观察者模式。

http://blog.csdn.net/dadalan/article/details/4240733

上述博客不是代码的复制和粘贴答案,但我提供了有关该模式的信息。

此外,如果您真的不需要更新视图,只要用户对其进行更改,您就可以简单地告诉FontHolder从字体数组中刷新自己。如果只有一个观察者是实现观察者模式的廉价方法。