1

可能重复:
KVO 和 NSMutableArray

正如标题所说,我需要能够检测到可变数组的变化。这样做的原因是,一旦用户添加了新位置,就会自动刷新我正在制作的应用程序的地图视图。

我想这就像询问数组是否等于数组的计数加一或数组的计数减一,但我不知道如何实现。

如果您在回答之前需要更多信息,请随时在评论中提问。

4

4 回答 4

2

您可以为此使用 Key-Value Observing。有关更多详细信息,请查看Key-Value Observing Programming Guide 简介

键值观察提供了一种机制,允许对象在其他对象的特定属性发生更改时得到通知。它对于应用程序中模型层和控制器层之间的通信特别有用。(在 OS X 中,控制器层绑定技术在很大程度上依赖于键值观察。)控制器对象通常观察模型对象的属性,视图对象通过控制器观察模型对象的属性。但是,此外,模型对象可能会观察其他模型对象(通常是为了确定从属值何时发生变化),甚至是它自己(再次确定从属值何时发生变化)。

您可以观察到的属性包括简单属性、一对一关系和一对多关系。一对多关系的观察者被告知所做更改的类型,以及更改涉及哪些对象。

查看这篇关于 KVO 的博客,了解如何使用它。另请查看本教程。还要检查这个问题,Key-Value-Observing a to-many relationship in Cocoa

于 2012-12-17T20:28:12.833 回答
1

这个问题有很多答案。

一种流行的方法是在每次模型更改时使用 NSNotficationCenter 发布通知。

您还可以使用委托在插入对象或 Key-Value Observing 时调用方法。

这很大程度上取决于您的设计。如果您指定,也许您可​​以获得更具体的答案。

于 2012-12-17T20:21:30.387 回答
0

您可以为此使用 KVO。就我个人而言,我不喜欢 NotificationCenter,但我想这是个人品味。

KVO 和 NSMutableArray

于 2012-12-17T20:28:59.227 回答
0

另一个解决方案是不要那样做。如果您是对可变数组进行更改的人,那么您知道您正在对可变数组进行更改。如果不是,请不要出售可变数组;将数组包装在一个类中,以便任何更改都必须通过您控制的方法进行。

于 2012-12-18T05:04:44.433 回答