Objective c 如何将KVC集成到MVC中?

Objective c 如何将KVC集成到MVC中?,objective-c,cocoa,model-view-controller,key-value-coding,Objective C,Cocoa,Model View Controller,Key Value Coding,因此,我在Cocoa中有一个MVC应用程序。 有一些自定义视图、控制器和模型。当然,视图需要知道一些东西,所以它们从控制器获取数据。但是,它们在控制器中不使用访问器,而是使用KVC和一个可以直接调用模型的键路径: // In view.m time = [timeSource valueForKeyPath:@"theModel.currentTime"]; // timeSource is a pseudo-delegate of the view that holds the control

因此,我在Cocoa中有一个MVC应用程序。
有一些自定义视图、控制器和模型。当然,视图需要知道一些东西,所以它们从控制器获取数据。但是,它们在控制器中不使用访问器,而是使用KVC和一个可以直接调用模型的键路径:

// In view.m
time = [timeSource valueForKeyPath:@"theModel.currentTime"];
// timeSource is a pseudo-delegate of the view that holds the controller
这大大简化了事情,从技术上讲,视图仍然不知道模型的真实性(即指针)。当然,他们可以直接访问它

这是KVC和MVC的常见(或至少合理)用法吗?

或者你将如何实现这种交流?

对我来说,这似乎非常接近于“了解”模型。我不知道大多数人是怎么做的,但我更可能在控制器上创建属性。我之所以要避免这样做,是因为如果更改模型,视图会中断。据我所知,MVC的主要优势之一是,如果你改变了模型,你就不必改变视图。

对我来说,这似乎非常接近于“了解”模型。我不知道大多数人是怎么做的,但我更可能在控制器上创建属性。我之所以要避免这样做,是因为如果更改模型,视图会中断。据我所知,MVC的一个主要优点是,如果您更改了模型,就不必更改视图。

然后,在控制器中,您只需向上传递模型中的值,并覆盖
keypathsforvaluesfectingvalueforkey:
,因此模型中的更改会传播回视图。然后,在控制器中,您只需向上传递模型中的值并覆盖
keypathsforvaluesfectingvalueforkey:
,这样模型中的更改就会传播回视图。