第1讲 Logistics, iOS 8 Overview
首先感谢网易公开课和SwiftV课堂的朋友们辛苦翻译,以下是本人的心得体会和笔记。本人学习的是CS193p的iOS8课程,大家有兴趣可以到itunes U中下载学习,实践在iOS9下。
当前学习环境:
- Xcode 7.2(7C68)
- iOS 9.2
- OS X 10.11.2
- Swift 2.1
一、本讲学习内容
1、这们课程讲的是什么?
为什么我们会在这呢?我们要学习iOS开发呀。呵呵
2、学习这门课的前提
你必须有很强的面向对象编程的经验。
3、iOS概述
讲解iOS上有什么。
4、演示
给大家讲解一个有数千行代码的演示程序(有关计算器的)
二、我们能从这门课程中学习什么?
1、如何编写一个"酷"的程序
- 很容易编写非常复杂的应用程序
- 程序在你的手机或背包里
- 通过AppStore应用商店很容易分发你的程序
- 精彩的开发社区
2、真正的真实的面向对象编程
- Cocoa Touch的核心是100%的面向对象
- MVC 设计模式
- 在开发平台中应用好多的计算机科学概念
Databases,Graphics,Multimedia,Animation,Networking 等 - 已经有好多的学生通过AppStore卖出了App
三、预备知识
1、前期课程
- 面向对象编程经验(必需)
- CS106A&B(或X)&CS107或CS108或CS110(需要)
或与Standford课程相近的课程
2、你需要知道下面一些专题:
- Classic
- Instance
- Message
- Instance
- Superclass/Subclass
假如你对以上这些专题都很了解,那么这门课程对你来说并不是太难。
3、程序体验
- 这是一门偏难的CS课程
- 假如你以前没有过任何编程经验的话,那这门课程对你来说是一个不小的难题。
四、在iOS内部有什么?
首先我们要知道IOS系统中的结构情况,从贴近硬件的底层到贴近用户的顶层,分为四个层次:
1.Core OS层
Core OS层在最下层,很多人可能不知道IOS是一个基于UNIX的操作系统,它大量借鉴了Mac OS X 的内核部分。Mac OS X我们肯定不会陌生,命令行的使用很好的证明了它是一个基于UNIX的系统。IOS针对移动设备,对电池等硬件进行了系统的优化,但它仍可被看成是一个UNIX系统。这样在最底层Core OS层就包括了 Sockets(套接字)、permission(权限)等等类似的部分。它靠近底层硬件,保证其正常工作。
2、Core Services层
面向对象层,在这一层中你可以使用大量的面向对象的技术,这层不包括UI,更多地是通过使用面向对象访问硬件或者网络。它是很大的一层,我们需要很多的时间来学习,因为需要这些原始组件来建立更高的层。
3、Media层
第三层是媒体层,比如我们所熟悉的IPEG等静态图像、视频的拍摄和处理、不可思议的音频框架用于处理3D音效及游戏等等。
4、Cocoa Touch层
我们会在Cocoa touch层上花费大量的时间,这一层包含了我们常用的一些控件,简单的譬如按钮、文本框等等,复杂的有浏览器和地图,你只需要拖拽到你的storeboard页面中就可以使用它们的强大功能。
五、开发平台控件
在进行iOS开发时,我们需要使用Xcode,这是一个非常强大的代码编辑器。语言方面我们有两种语言可供选择,一是Objective-C,这门语言已经使用了2530年,非常的成熟,但是它已经2530岁了!去年夏天苹果公司发布了新语言Swift,你可以用它开发一切IOS的应用,为了它的诞生苹果公司做了很多努力,Swift吸收了很多已经存在的编程语言的优点。它语法简洁、类型安全并且还有类型推断以及大量特性。
此外我们需要学习一些框架的知识,UIKit,这是页面开发的主要框架。Foundation,会在Core Service层经常提到。Core Motion框架用于处理设备移动、旋转、陀螺等。Coredata框架用于面向对象操作。
六、演示
1、Calculator
- 课程很吸引人
- 我们开始我们的Xcode 7和Swift编程
- 花费两节课讲完这个演示
2、今天在这个演示中讲到的专题:
- 在Xcode7中建立一个项目
- 建立一个UI(使用Autolayout)
- iOS模拟器
- print(使用()来转变成String)
- 在Swift中定义一个类
- 用Swift代码来联结UI上的元素
- 通过代码来访问iOS文档
- Optional
3、计算器程序代码:
- 新建一个项目为:Calculator 的项目
- 在窗体上放置1个UILabel,和1个UIButton。
- 将多个button集中在一个Action里
- 先将多个button绑定
- 通过currentTitel获取button的值