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