可能重复:
KVO 和 NSMutableArray
正如标题所说,我需要能够检测到可变数组的变化。这样做的原因是,一旦用户添加了新位置,就会自动刷新我正在制作的应用程序的地图视图。
我想这就像询问数组是否等于数组的计数加一或数组的计数减一,但我不知道如何实现。
如果您在回答之前需要更多信息,请随时在评论中提问。
可能重复:
KVO 和 NSMutableArray
正如标题所说,我需要能够检测到可变数组的变化。这样做的原因是,一旦用户添加了新位置,就会自动刷新我正在制作的应用程序的地图视图。
我想这就像询问数组是否等于数组的计数加一或数组的计数减一,但我不知道如何实现。
如果您在回答之前需要更多信息,请随时在评论中提问。
您可以为此使用 Key-Value Observing。有关更多详细信息,请查看Key-Value Observing Programming Guide 简介。
键值观察提供了一种机制,允许对象在其他对象的特定属性发生更改时得到通知。它对于应用程序中模型层和控制器层之间的通信特别有用。(在 OS X 中,控制器层绑定技术在很大程度上依赖于键值观察。)控制器对象通常观察模型对象的属性,视图对象通过控制器观察模型对象的属性。但是,此外,模型对象可能会观察其他模型对象(通常是为了确定从属值何时发生变化),甚至是它自己(再次确定从属值何时发生变化)。
您可以观察到的属性包括简单属性、一对一关系和一对多关系。一对多关系的观察者被告知所做更改的类型,以及更改涉及哪些对象。
查看这篇关于 KVO 的博客,了解如何使用它。另请查看本教程。还要检查这个问题,Key-Value-Observing a to-many relationship in Cocoa
这个问题有很多答案。
一种流行的方法是在每次模型更改时使用 NSNotficationCenter 发布通知。
您还可以使用委托在插入对象或 Key-Value Observing 时调用方法。
这很大程度上取决于您的设计。如果您指定,也许您可以获得更具体的答案。
您可以为此使用 KVO。就我个人而言,我不喜欢 NotificationCenter,但我想这是个人品味。
另一个解决方案是不要那样做。如果您是对可变数组进行更改的人,那么您知道您正在对可变数组进行更改。如果不是,请不要出售可变数组;将数组包装在一个类中,以便任何更改都必须通过您控制的方法进行。