2011斯坦福 iOS 应用开发第一课

这节课主要讲了两个东西:
1. iOS 概述
2. MVC 讲解segmentfault

iOS 概述

iOS Overview

iOS分为四层,最底层为Core OS,是一个Unix内核,也就是Mac OS 10。上层为Core Services,即核心服务层,提供较为面向对象的API,能够把它当成是提供面向对象支持的Core OS的封装。再上一层为Media,提供多媒体API的支持。顶层为Cocoa Touch,咱们开发应用时大部分都是在这层上进行。spa

MVC

  • MVC包含三个部分(Model,View,Controller)。
  • Model用来储存数据,好比你有个打飞机的应用,那么飞机的飞行高度、有几个机枪、血量、飞行速度等这些数据都是存储在此。要特别注意的是,Model不是用来处理UI的 ,好比飞机在屏幕的哪一个位置、飞机的形状是怎样的等等这些有关UI 的都与Model无关。Controller拥有访问Model的全部权限,那么它们之间是如何通讯的呢?这就用到了Notification&KVO(通知和关键数据监听)机制,当Model里的数据改变时(例如飞机受伤了致使血量降低),它就经过KVO机制进行广播通讯,因为Model是Controller的被观察对象,因此当Model进行广播时,Controller做为观察者就会接收到来自Model的信息,而后再告诉View要进行相应的UI处理。
  • View就像Controller的仆人,它遵从Controller的指挥以用来处理UI。它们之间经过outlet进行通讯。target,Controller经过建立target接收来自View的action,好比View的控制条被滑动了或者button被点击。View并不了解Controller的任何信息,它只简单的与Controller进行通讯,那么它们之间如何进行同步呢?上图中的should、will、did就是用来告诉View应该作的、将要发生的和已经发生的,这么作的缘由是Controller把本身设为delegate(委托),这是另外一种通讯方式。还有一个重要的事是,View并非它显示的数据的全部者,即View不拥有数据。若是View不拥有数据那么它如何显示数据呢?这就是另外一种相似delegate的通讯协议,例如上图的data at和count方法。这就能够去查询表中的数据,好比个人iPod有1000首歌,而个人屏幕只能显示其中的10首,View就能够经过需求去请求数据,这很是高效。但不要把这功能写到View中,由于View只显示数据,Controller和Model一块儿有效的提供数据。相似的,View有一个数据源的设置,即上图的data source,Controller会回应数据。注意:数据源的delegate永远是Controller或Controller设置的第三方,但不多是Model。Controller的工做是把Model的数据传递给View,响应全部的delegate。Controller获取Model而后显示在屏幕上,Model和View之间不会进行通讯,这些工做都有Controller来执行。
相关文章
相关标签/搜索