网易公开课-iOS7应用开发-笔记-1-(1)

[第1集]课务、iOS概述

这里写图片描述

MVC

定义

模型-视图-控制器(Model-View-Controller)(本文将以音乐播放器作为例子并进行阐述)

关系

其实可以先看整体情况, Controller处于中间,明显是起到协调三部分的重要角色。再细看之间的分界线,两条虚白线代表单向通信,双黄线代表禁止通信。

(1)Controller-model:对于一般的应用来说,Controller需要通过model解析后,再通过view呈现到用户。音乐播放器需要将每首歌曲的信息展示到用户眼前。第一步则需要通过model把每首歌的信息进行提取,再进行展示。所以Controller是不受限制的访问model。

(2)model-Controller:因为一般的model是通用的,而且model也没必要知道Controller情况。歌曲的信息可以在多个不同的页面进行展示,比如不同的歌手,不同的风格,页面都是通过使用同一个model进行展示数据的。但是一旦有页面并不需要把歌曲的所有信息都全部显示,而且要告知Controller进行隐藏信息,则需要用到广播,ios上广播的方式有两种:Notification和KVO(Controller与model上黄色尖尖的发射头)

(3)Controller-view:同样的,Controller拿到数据后,需要展示到用户上。需要控件进行展示,而ios上需要是通过outlet与view进行通信。

(4)view-Controller:而当歌曲列表中的其中一首歌被点击,此时view必须告知Controller,其中一首歌被点击,并且需要播放。在ios上则是通过action告知到target以达到通知Controller;

而对于一些复杂的控件来说,需要更多方面的信息来了解用户的行为,而不是单单的点击。又是怎样通知到Controller尼?直接拿音乐列表来说:should-当用户手指放在屏幕,此时列表(view)可能会询问Controller能否进行拖动。will-当列表(view)被Controller告知,你允许拖动后,当用户发起拖动的动作时,列表(view)会告知Controller,我将要进行滑动了。did-当用户滑动完毕,并且手指已经离开屏幕时,列表(view)则需要告诉Controller,我已经滑动完毕了。对于这些情况,在ios里面是view是通过delegate来告知Controller的。

对于一些需要数据支持后才能显示的控件来说,是通过data source来获取数据的,它是一种特殊的delegate。当我们的歌曲列表滑到下一页的时候,列表(view)会告诉Controller:我需要更多的数据进行显示,并且我要拿多少条数据。所以在这些情况下需要view与Controller通过data source进行通信。

(5)model-view:view的根本是UI,并且是通用的,而且是通过Controller解析model后获取到数据才进行展示,所以view不需要与model进行通信,反过来也说也是一样道理。其实可以想想歌曲列表与每首歌曲的信息的关系,显然是没有必要的联系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值