zoukankan      html  css  js  c++  java
  • 斯坦福2013最新iOS7程序开发公开课笔记(1)

    我的斯坦福2013最新iOS7程序开发公开课笔记

    原文地址见博客园 http://www.cnblogs.com/noblog/p/stanford-ios7-developement-1.html

    本质上,Model用来表示What is my application,在扑克匹配程序中,比如Cards,Deck或者怎么游戏逻辑,等等UI独立的部分都是在Model中,Controller控制如何将Model展示在View当中,View是非常generic的层,而是用C去控制V层。

     

    三者之间的交互,C到M和V都是绿色的通道,应该做的,V跟M之间是红线,两者之间应该永不直接交流。M独立于V,而V需要C来指定如何。V要是到C的话,应该一种结构化的方式,因为毕竟图形界面得跟程序交互,收到外面的信号之后得能传回系统也就是C当中。结构化的方式是约定好的调用方式。第一种,也就是C里有一个target然后把这个target的action给V,每当V回调C的时候,就知道直接调用这个target了, blind simple structured way调用。这样的例子比如,按一个按钮,对应的一个action到C当中。第二种就是will/should/did的类型,当一个V的界面变化的时候,比如用户下拉列表,V应该问比如是否应该展示呢,这类的will/should/did应该用delegate protocol的方式交给C去做,这里涉及到delegation的模式。第三种,就是data source,V不应该拥有展示的数据,比如一个list展示一个歌曲列表,不应该在V层面的list保存1000首歌曲,而是应该交给C,来获取data,比如从100到150的歌曲名之类的,data source也是一种delegate,所以iOS中最常见的就是will/should/did类型的delegate以及一些这种data source的delegate,这就是V与C交互的方式。


    M如何与C交互,比如M有时候来自网络数据,如果该数据更新了,如何通知C来更新V呢?做法就是用类似radio的方式,就是广播一个消息任何人都可以关注它,Notification & KVO (Key-Value-Observation)就是设定一个预先定好的更新,C只需要listen to那个信号,等一来更新,就收到了。


    这样就覆盖了一个最基本的MVC交流形式,C到MV,MV之间不交互,M到C通过target action以及delegate,M到C是notification KVO,小的MVC可以组合成更大的MVC集合,比如有个tab bar点击进去之后,指定到另一个MVC。

     

  • 相关阅读:
    校招基础——时钟
    校招基础——存储器
    1065 A+B and C (64bit) (20分) 测试点3 别用cin
    如何删除windows10右键新建中不需要的选项
    Halcon2019软件安装教程 转载自:https://blog.csdn.net/cashmood/article/details/105081705
    SQL Server 跨服务器视图
    idea快速开发插件
    Npoi to Excel 简单拼写与读取
    关于提供第三方接口一键登录
    微信公众号-入坑指南(一)
  • 原文地址:https://www.cnblogs.com/noblog/p/stanford-ios7-developement-1.html
Copyright © 2011-2022 走看看