[Stanford 2011] MVC introduction
以下是课程笔记,仅供以后复习之便。
1.什么是MVC?
(1) Model:如飞机激战的游戏中,太空中的飞船,什么机型,每个飞船有多少机枪,多少护甲,这些硬件组成是model。
(2)Controller: 控制model如何在UI上展现给user。Controller的工作是把Model的信息传达给View,响应所有的delegation,因为它能获得Model里的数据, 决定怎么在屏幕上显示,这是它的职能。
(3)View:View是很通用的,是Controller使用的工具,应尽可能的使View阵营里的对象通用化。View不是它显示的数据的所有者,View只是一个平面,用来显示数据,它是一个显示信息的平台。View没有实体变量也不会存储,只有指向他们的指针。View是通用的用来显示的。Controller利用这些通用View来做Model需要做的事情。
View不拥有它所显示的数据,它是如何获得数据的呢?一个类似delegation的方法,它有一些协议,如data at和count,View根据需要去请求数据,非常高效(比如ipad中有10000首歌,但屏幕上只显示7首)。类似地,View会有一个数据源的设置,Controller会回应数据源。注意,数据源的代理delegation永远永远是Controller,或者是Controller指定的第三方,但不可能是Model。
2. MVC的通信方式
(1)Controller用来把Model展现在屏幕上,所以Controller对Model有完全访问权。
(2)Controller可直接与View对话,如:设标志,让View做些东西,在屏幕上排列View,数据通信。Outlet是Controller用来和View通信的属性,所以,我们要在Controller里创建outlets传到View中去。
(3)Model永不和View通信。
(4)View对Controller的通信是不可见的,View不知道在和谁通话(Controller控制如何在屏幕展现Model)
(5)View向Controller通信的方法
a)结构的方法,target action,Controller自己画一个target,然后把一个action交给它的View,当View发生action事件,比如按钮被按,它会把action发到target,然后Controller就知道按钮被按了。View会报给Controller发生了什么,但View对Controller知道的并不多,只是简单地发送target action。
b)delegation是另一个View和Controller通信的方法。View告诉Controller(did、will、should),Controller把自己设为委托,设立一个协议,来回应(will、did、should),View不用知道回应的Controller是哪个类。
(6)广播。Model不能向Controller发话,如果Model里的数据改变了,如何更改controller呢?在iOS里我们实现的方法是用一个广播站,就像信息广播机制,有2个机制:通知(Notification)和关键数据监听(KVO)。KVO也可用于View和Controller但不会是View和Model,View不会有面向Model的广播,View和Controller会互相有广播。
Model广播非常好用,因为是不可见的,但也有限制,只能通知被允许通知的对象发生了什么事。
(7)1个Model只有1个Controller。
Controller可以和其他人的View对话吗?通常Controller会有个指针指向另一个Controller来当做View,它会要求那个Controller来显示东西。所以,当Controller需要显示复杂东西的时候,它需要其他的Controller。
[Stanford 2011] MVC introduction的更多相关文章
- [Stanford 2011] Views 知识点
一.view分层 (1)View的结构是分层的,一个view只能有一个父view,但可以有多个子view.子view的顺序是相关的,在数组中的位置越高或者说数字越大,就显示在后面,位置低的显示在前面. ...
- [Stanford 2011] Ordinary Calculator(By myself)
说明: 前面的RPN计算器是按照stanford课程做的,是后缀表达式的计算.现在这个计算器是自己做的.这个是一般的计算器,即中缀表达式的计算,而且把计算过程也显示在屏幕上, 设计方法: 在Model ...
- [Stanford 2011] 知识点小结
1.获得帮助:option+click / option+double click 2.@property里的nonatomic,表示非原子性访问,atomic是obj-c里使用的一种线程保护技术, ...
- 斯坦福2011秋季 iPad and iPhone Application Development 资源
1. MVC and Introduction to Objective-C (September 27, 2011) - HD 2. My First iOS App (September 29, ...
- 基于 Dojo toolkit 实现 web2.0 的 MVC 模式
前言 MVC 模式是设计模式中的经典模式,它可以有效的分离数据层,展示层,和业务逻辑层.Web2.0 技术由于其良好的用户体验被广泛应用于 WEB 应用的展示层.但是在传统的 web 开发中,展示层的 ...
- [转载]WIKI MVC模式
MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). MVC模式最 ...
- ASP.NET Core MVC 模型绑定 (转载)
ASP.NET Core MVC的Model Binding会将HTTP Request数据,以映射的方式对应到参数中.基本上跟ASP.NET MVC差不多,但能Binding的来源更多了一些.本篇将 ...
- OpenGL管线(用经典管线代说着色器内部)
图形管线(graphics pipeline)向来以复杂为特点,这归结为图形任务的复杂性和挑战性.OpenGL作为图形硬件标准,是最通用的图形管线版本.本文用自顶向下的思路来简单总结OpenGL图形管 ...
- (转) Awesome Deep Learning
Awesome Deep Learning Table of Contents Free Online Books Courses Videos and Lectures Papers Tutori ...
随机推荐
- ural 1433. Diamonds
1433. Diamonds Time limit: 1.0 secondMemory limit: 64 MB Sasha is lucky to have a diamond in the for ...
- pingpang ball
#pragma strict var smooth=2.0; var tiltAngle=30.0; function Start () { } function Update () { transf ...
- BZOJ3165 : [Heoi2013]Segment
建立线段树,每个节点维护该区间内的最优线段. 插入线段时,在线段树上分裂成$O(\log n)$棵子树,若与当前点的最优线段不相交,那么取较优的,否则暴力递归子树. 查询时在叶子到根路径上所有点的最优 ...
- BZOJ3796 : Mushroom追妹纸
将S1与S2用#号拼接在一起形成S串 将S3与S串跑KMP求出S3在S串中每次出现的位置l[i] 对于S串每个后缀i,求出f[i]表示该串不包含S3串的最长前缀 然后求出S串的后缀数组 先从小到大扫描 ...
- [Unity2D]GameObject游戏对象的灵活运用
Unity2D的游戏可以说是由一堆GameObject构成的,GameObject的使用非常灵活,不仅仅是给单个精灵使用,你可以发挥你一切的想象力来利用它来解决一些实际上的问题.比如: 1.给一个精灵 ...
- (译)V8引擎介绍
V8是什么? V8是谷歌在德国研发中心开发的一个JavaScript引擎.开源并且用C++实现.可以用于运行于客户端和服务端的Javascript程序. V8设计的初衷是为了提高浏览器上JavaScr ...
- [转载]git 忽略某些文件
项目中经常会生成一些Git系统不需要追踪(track)的文件.典型的是在编译生成过程中 产生的文件或是编程器生成的临时备份文件.当然,你不追踪(track)这些文件,可以 平时不用"git ...
- 分布式架构高可用架构篇_01_zookeeper集群的安装、配置、高可用测试
参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...
- git命令常见问题总结
1.git如何放弃所有本地修改 git checkout . #本地所有修改的.没有的提交的,都返回到原来的状态 git stash #把所有没有提交的修改暂存到stash里面.可用git stash ...
- 2016.03.31,英语,《Vocabulary Builder》Unit 08
tend/tent: from the Latin tendere, meaning 'to stretch, extend, or spread'. tent: [tent] n. 帐篷 vt.&a ...