CS193笔记 第二讲 MVC 和 计算器应用

虽然只是课程的第二讲,但其中的干货还是很多的。强烈建议跟着视频一起动手实现。

本讲简介:本讲主要涉及三方面的内容。一,MVC。二,计算器的实现(枚举, 闭包)三,自动布局。

一,MVC。这应该是最著名的设计架构了。学习MVC 要注意掌握以下要点

Model : 模型是应用的核心,代表了应用所包含的数据,以及对数据的操作。

Controller: 控制器决定了模型是如何被展示的

View: 视图是控制器的附属,被控制器用来展示数据

关键点: 视图和模型相互之间不应该有任何直接的交流。

另外要注意的是,并不是所有显示出来的内容都属于View,比如计算器应用中的那些按钮。应用中往往还包含许多属于MVC以外的东西。MVC只是人们用来刻画应用中一种常见的核心的架构。实际应用中常常要包含多个MVC架构一起工作。一个MVC可以做为一个整体成为另一个MVC中的View。

深刻理解和掌握MVC架构有助于我们做出简洁、高效的设计。从MVC中还衍生出一些其它的所谓新的架构,如MVVM,MVP。不建议新手去过多涉及,容易糊涂。等自己有过一些实践之后,再去看更容易理解或者发现自己已经应用过这些架构了。重点是掌握设计背后所遵循的原则。

计算器:

计算器的实现通常是使用堆栈。比如在iOS 8 版的cs193p中的演示就是基于堆栈实现的。这个版本和上一版使用了一个临时的结构PendingBinaryOperation来存贮前一个操作数和操作符。这样带来的一个问题是如果连续操作的话只会保留最后一次的结果。例如,连续按 1+2+3+4+5= 结果会是9 而不是15。这样的实现很大程度是因为要介绍枚举的关联值特性。

枚举成员可以指定任意类型的关联值存储到枚举成员中。

CS193笔记 第二讲 MVC 和 计算器应用_第1张图片
带关联值的枚举成员

这个枚举类型包含4个成员。其中3个含有关联值。function 也可以作为关联值。使用这样的枚举成员时需要同时标明相应的关联值。关联值可以给有不止一个。关联值的提取可以用let,也可以用 var。详细可以参考官方的Swift手册。

闭包可以看作是一个未命名函数,或者一堆语句操作的集合。

Autolayout:

苹果提倡在story board中直接利用autolayout进行布局。虽然使用story board在协同开发的时候可能会引起混乱。但这不影响Autolayout 成为iOS开发必须要掌握的内容之一。关于autolayout的介绍在后面的课程里还会涉及。在本讲中,主要是利用stack view 来组织和排列计算器的按钮和结果显示,比较易懂。感兴趣的同学还可以试验一下去掉一个按钮,比如cos,然后让等号变为两倍宽该如何布局。

另外在Xcode 中可以非常方便地观察当前的布局在不同设备上的表现。所以基本不需要使用preview了。

其它:

本讲提到了类,结构以及枚举类型的一些异同。下一讲还有介绍。

结构会自动获得一个构造函数( initializer),大家可以根据下图想象一下它的样子

CS193笔记 第二讲 MVC 和 计算器应用_第2张图片
 
结构的初始化

因为结构在传递时使用的是值拷贝,所以如果一个结构的成员函数会修改自身,函数须要用mutating标明。

constant 和 unaryOperation 在swift中都不是保留字

函数如同class, struct,double一样也是一种类型

使用Playground 可以方便的验证代码的效果。这在学习新语言的时候很有用。

影响应用性能的三种操作,由大到小排列是:网络下载 > 屏幕绘图/显示 > 从数据库中取数据

本讲用到的快捷键:

⌃+⌘+Space        // 显示符号输入对话框     

你可能感兴趣的:(CS193笔记 第二讲 MVC 和 计算器应用)