ios - 是否可以观察来自不同类的 NSMutableArray?

标签 ios objective-c mvvm nsmutablearray key-value-observing

我将尝试尽可能简洁地总结这一点:

我有三个类:ViewControllerViewModelDataSource

ViewController 创建ViewModelDataSource。然后,它继续使用 NSMutableArray“配置”DataSource,该 NSMutableArray 最初由 ViewModel 创建并拥有。

我知道,通过实现适当的索引访问器方法,我可以使 NSMutableArray 属性兼容 KVO,以便我的 ViewModel 可以观察其更改。

但是,我想要做的是观察我的数据源的变化。

当配置DataSource时,将NSMutableArray“设置”为其自己的“对象”属性(弱、强、复制???)。每当 NSMutableArray 通过 ViewModel(从服务器获取数据)更新时,我的 ViewModel 就会意识到这些更改。但是,我似乎无法从数据源观察到这些变化。

有什么建议吗?

(另外,这不是一个优先事项,但有人知道如何使用 RAC “响应式”执行此操作吗?)。

最佳答案

是的,可以从另一个类观察一个类的数组属性的变化。我已经做到了。时间久了,手边没有代码,所以不能给你具体的,但确实是可以的。

它很脆弱,因为如果监听对象在没有将其自身作为 KVO 观察者移除的情况下被释放,您就会崩溃。

这种 KVO 观察对我来说似乎很糟糕。它在您的类之间创建了相当紧密的耦合,并使观察类依赖于被观察类的实现细节。

如果我再次这样做,我可能会在拥有该数组的类中使用 KVO,然后广播通知、使用回调或使用其他方法通知感兴趣的外部对象有关未更改的更改有如此紧密的耦合。

关于ios - 是否可以观察来自不同类的 NSMutableArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35371634/

相关文章:

ios - 使用按需资源自动上传 iOS AppStore

android - iOS 和 Android 设备之间的点对点通信

ios - NSDateFormatter 崩溃

iphone - 访问 bool 值表单 Sqlite 数据库

iphone - 在 XCode 中每个目标有多个实现是否可以?

c# - 不是单例 ViewModel 并且仍在同步

c# - WPF MVVM 在您键入时更改文本框大小

ios - 如何用文本动态打破 UILabel 的行?

objective-c - Cocoa:从另一个类调用应用程序委托(delegate)方法

wpf - 使用 WPF/MVVM 从网格中的复选框获取更改事件?