2011年冬季斯坦福大学公开课 iOS应用开发教程是个很经典的教程,这个老头讲的很给力。做笔记总结。

第一课名称: MVC and Introduction to Objective-C

这课的主要内容有:

iOS的概述  -什么是iOS

MVC - 面向对象的概念

Objective-C-介绍下语言的概念

iOS包括四层

内核

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

Core Sevices层

这层开始面向对象了,提供了很多底层服务。提供运行时,多线程等。还有集合类,数组,字典啊。可以把这层当做提供了面向对象的Core OS的封装。

多媒体层

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

Cocoa Touch 层

我们的 90%时间都用在这层, 按钮,滚动条,各种控件等。

介绍平台的组成:

工具: XCode 4

语言:objective-c

Framework  foundation   UIKit

设计模式

重点介绍下MVC

三大阵营: model  view  controller

model

描述的是你的程序是什么。比如一个太空船的程序,比如飞船的位置,型号,飞船有多少个机枪,护甲多少。

controller

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

view

是controller的小弟,view是工具。尽可能是view通用的,按钮,滚动条等,决不能包含任何如何去表现的逻辑。controller用这些通用的view做model想要做的事情。

有了这三个阵营,剩下的就是他们之间管理和通信了。

controller->model 完全允许。因为controller 要问model如何在屏幕展现内容。

controller->view  完全允许 。  通讯属性outlet,在controller里创建outlets传输到view中。

model---view  之间永远不会通讯。因为model和界面没有关系。view是要重用的,model和view关联,当model改变后,view得重写。

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是哪个类。

记住:views 不拥有它们展示的数据。

那view如何获取数据呢?

通过协议获取,delegation 方法,比如data at , count.

数据源的delegation永远是controller,不可能是model。

三大阵营的工作流程是这样的:controller去model那取数据,告诉view展现数据在屏幕上。即使只有一行代码,也得有controller来参与,不能坏了规矩。

model不能主动勾搭controller,那model数据有变化了,那怎么让controller知道呢?Notification 或KVO机制。当model数据改变,它就广播,controller就收到了。

MVC模式关系,请记住这张图,后面讲的课经常提到些关系:

mvc群:

当很多个model ,controller, view时,组成了mvc 群,还是要遵循上面的规则。

objective-c语言的基本概念。

objective-c是c的超集,import 的使用,@property替代了原来类里的实例变量,当然实例变量也可以使用,@property帮你自动生成getter 和setter,@property之后就可以用点号 self.topSpeed访问变量了,相当于[self topSpeed]

[cpp] view plaincopy
  1. @interface Spaceship()
  2. // declaration of private methods (as needed)
  3. @end

通过这样的方式声明私有的方法。

个人感觉这里讲的语法不太利于国人理解,比较繁琐。这里讲的objective-c类方面的之后可以参考:

Objective-C语法之类和对象

可能更容易理解。

2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C相关推荐

  1. 2011斯坦福大学iOS应用开发教程学习笔记(第二课)My First iOS App

    2019独角兽企业重金招聘Python工程师标准>>> 第二课名称是: My First iOS App 我的第一个iOS应用 注意:我用的是XCode Version 4.5.2 ...

  2. 2011斯坦福大学iOS应用开发教程学习笔记(第七课)Pad和iPhone的通用程序

    第七课的主要内容:iPad 和iPhone的通用程序 这节课主要讲如何在一个程序里适配iPad 和iPhone. 内容简介 1.UIToolbar上面放的都是UIBarButtonItem 可以参考i ...

  3. 2011斯坦福大学iOS应用开发教程学习笔记(第六课)故事版

    第六课 主要内容:多个MVC的程序和故事版.UINavigationController. Segues 1.多个MVC 前面的程序都是一个MVC,多个View时,怎么办,那就需要多个Controll ...

  4. 斯坦福大学iOS应用开发教程学习笔记(第七课)Pad和iPhone的通用程序

    第七课的主要内容:iPad 和iPhone的通用程序 这节课主要讲如何在一个程序里适配iPad 和iPhone. 内容简介 1.UIToolbar上面放的都是UIBarButtonItem 可以参考i ...

  5. 斯坦福大学iOS应用开发教程学习笔记(第六课)故事版 StoryBoard

    第六课 主要内容:多个MVC的程序和故事版.UINavigationController. Segues 1.多个MVC 前面的程序都是一个MVC,多个View时,怎么办,那就需要多个Controll ...

  6. Cocos Creator游戏开发教程 学习笔记

    学完提问几个问题吧: position的锚点位置数值原点在哪里? 因为position是相对坐标,所以原点是父节点的锚点 .所以Canvas下面的直属节点原点就是世界坐标系的原点Canvas的锚点. ...

  7. 二十一世纪大学英语读写基础教程学习笔记(原文)——5 - Shipwrecked in Antarctica(沉船南极洲)

    Unit 5 - Shipwrecked in Antarctica(沉船南极洲) Ernest Shackleton made many great achievements in his life ...

  8. 二十一世纪大学英语读写基础教程学习笔记(原文)——10 - The Future(未来)

    Unit 10 - The Future(未来) What will our future be like? What might happen in the year 2144? How far c ...

  9. 二十一世纪大学英语读写基础教程学习笔记(原文)——2 - It‘s a New Day(新的一天)

    Unit 2 - It's a New Day!(新的一天) In the following text, the writer tells us how we can manage to face ...

最新文章

  1. 《CUDA C编程权威指南》——1.5节总结
  2. 玉山银行的一名新员工“玉山小i随身金融顾问”
  3. 无数学不华为?人工智能时代的数学家还将走得更远
  4. 量子科技概念大火,国内现状如何?国盾量子撑起量子通信,华为BAT均入局量子计算...
  5. Java与WCF交互(一):Java客户端调用WCF服务
  6. arcgis python 保存当前窗口图形为jpg
  7. leanote 信息栏显示笔记本和笔记类型
  8. Python连接DM8数据库
  9. 一个入门的学生选课系统
  10. mint linux qq,linuxmint系统下安装QQ
  11. 市域治理现代化平台面纱揭开!来看JDD数字科技成果还有哪些惊喜
  12. DTFT、DFT、FFT
  13. gulp怎么运行html文件,如果gulp-watch监视html文件,它会运行所有任务
  14. Java 经典习题-初学
  15. 神经网络发展的五个阶段,神经网络发展历程
  16. 清翔51单片机开发板及原理图-去年购买的
  17. win10把用户中文名改为英文名
  18. 那些年的 Hello World (HTML)
  19. linux swap
  20. 基于单片机的自动浇花灌溉系统设计(#0417)

热门文章

  1. ThinkPad 在win10系统上设置Windows Hello
  2. Simulink学习——基础建模流程案例(一)(简单弹簧阻尼器复合系统建模)
  3. 图像化界面开发之QT入门
  4. 北京交通大学2020计算机考研科目,2020北京交通大学软件工程考研初试科目、参考书目、复试线...
  5. Day04-爬取豌豆荚app数据
  6. OpenCV安装成功,但是无法导入 cv2 的指定模块 -- Ubuntu Anaconda 环境一键安装 opencv
  7. XPS文件如何在线转成Word
  8. 前端 用nginx解决js跨域问题
  9. HAL库开发BMP280读取压强
  10. Java程序 CPU使用率过高怎么办?