CS193p 斯坦福IOS开发 2011 (一)

2018-10-08  本文已影响0人  ItchyHiker

所有笔记基本参考这个专栏自己重新梳理了一遍,有所增删。

什么是IOS

内核

mac OS 操作系统内核是mach 4.x BSD UNIX内核 ,是个多任务的UNIX内核,在这层上提供了网络,socket ,安全机制,文件系统,大部分这些api是c api 没有面向对象,因为这些都是UNIX代码。我们不会在这层上写代码。


Screen Shot 2018-10-07 at 9.58.34 AM.png

Core Sevices层

这层开始面向对象了,提供了很多底层服务。提供语言运行环境支持,比如多线程等。还有集合类,数组,字典啊。可以把这层当做提供了基本面向对象的Core OS的封装。

Screen Shot 2018-10-07 at 9.58.48 AM.png

多媒体层

好像离硬件更远了,其实是还是很近, iPhone iPod iPad都是多媒体设备, 多媒体相关的代码贯彻了整个iOS,在开发者眼中 core services都是多媒体的api。

Screen Shot 2018-10-07 at 9.58.54 AM.png

Cocoa Touch 层

Cocoa是Mac OS的开发环境,Cocoa Touch是IOS的开发环境。我们的 90%时间都用在这层, 按钮,滚动条,各种控件等用户交互界面。

Screen Shot 2018-10-07 at 9.59.01 AM.png

平台组成

MVC 设计模式

Model

描述你的应用是什么,做什么的。和如何展示没有关系。

Controller

描述应用如何在屏幕上展示,它获取到了飞船在太空中的位置,然后算出来怎么在屏幕上展现出来。比如飞船的多个机枪如何在屏幕上展现。总之controller控制如何在UI上展现model。

View

view是Controller用来展示model的小控件,尽可能是通用的, 如按钮,滚动条等。决不包含如何展示的逻辑。

三者之间的通信

三者之间相互通信一共有6中情况:

controller 到 model

完全允许, controller要从model获取如何在屏幕上展现内容的信息。

controller 到 view

完全允许 。 controller通过outlets属性和来和view通信,在controller里创建outlets传输到view中。

model 到 view

永远不会通信。因为model和UI界面没有关系,view要重用。如果model和view关联的话,model改变之后 view需要重写。

model 到 controller

model不能主动和controller通信,如果model中有内容改变了,需要更新,通过Notifaction & KVO广播机制告知controller。

view 到 model

永远不会通信, 和model到view是一样的。

view 到controller

view和controller通过 target action这个结构来通讯。controller自己画了个 target(目标) ,然后把action(动作)交给view。当view发生一些事情,比如按钮被按下,它把action 发送到target,这时候controller就知道了。view 和controller还有别的通讯机制,比如view要告诉controller发生什么事情 ,将要发生什么事情,或询问是否允许,用到了will did should 。controller把自己设置成委托,用协议来完成委托。来回应will,did,should。这时候,view 不知道回应的controller是哪个类。

那view如何获取数据呢?
通过协议获取,delegation 方法,比如data, at , count. 数据源的delegation永远是controller,不可能是model。
三大阵营的工作流程是这样的:controller去model那取数据,告诉view展现数据在屏幕上。即使只有一行代码,也得有controller来参与,不能坏了规矩。

Screen Shot 2018-10-08 at 9.08.29 AM.png

Objective-C语言介绍

objective-c是c语言的超集,增加了面向对象的部分。

Header File

Implementation File

其他

具体语法参考课件能有更加清晰的理解!

上一篇 下一篇

猜你喜欢

热点阅读