我正在尝试在实现 Store Kit 时提出好的设计。
尝试遵循 MVC 约定,我有以下内容
模型:商店观察者视图:一些将显示 UI(产品选择等)的视图控制器:我的视图控制器
我的 View Controller 是否应该为产品请求实例化一个 Store Observer 类并更新 UI。这是这样做的正确方法吗?
由于它是异步的,因此我也无法确定在哪里进行产品请求调用。以及在获取产品信息后如何更新 UI(我是否调用 SetNeedsDisplay)
非常感谢你
你应该看看代表。通过定义代理对象符合的委托协议,您可以在不破坏 MVC 的情况下使事情发生。然后,您可以通过调用委托协议中定义的方法来调用委托方法。效果有点像拥有一个指向对象的指针并直接调用它的一个方法,但它不一样——对象仍然是解耦的,通过定义协议,你可以定义你可以做什么,这样你就不会结束与类无可救药地交织在一起。
引起动作的对象——称之为 A——定义了一个委托属性。它被设置为符合委托协议的某个对象 B。B 需要在其标头中包含委托说明符以表明它符合协议,并且它需要实现协议中定义的每个方法(除了那些定义为可选的方法)。只要协议公开它们,A 就可以调用 B 中的方法。你最终不会得到 A 有一个指向 B 的指针和 b 有一个指向 A 的指针。这正是 UITableView 的工作原理,你可能已经使用过委托。
在您的情况下,看起来控制器将创建一个商店观察者。它还将为模型必须发送回控制器的任何通知实现委托方法。模型的委托被设置为控制器,并且控制器可以被通知模型的更改(它可以正确访问)以更新 UI。