斯坦福iOS9公开课总结(一):What`s in iOS


在此之前就看到过斯坦福公开课《Developing iOS9 Apps With Swift》,一直没能静下心来认真学习。最近工作比较轻松时间充足,打算用两个月的时间,认真学习斯坦福iOS9开发视频。本文集,一方面通过视频可以学习Swift,另一方面通过记录笔记督促学习。

课程地址:【最新】Developing iOS 9 Apps with Swift(斯坦福大学公开课:iOS 9开发)

多说无益,开始吧!

what`s in iOS

关于iOS系统参考:官方文档
Layers of iOS

Core OS
Core OS Layer包含大多数技术所基于的低级功能。即使不直接在应用中使用这些技术,它们也很可能被其他框架使用。在需要明确处理安全性或与外部硬件附件通信的情况下,您可以使用此层中的框架。
Core OS

主要包含:

  1. Accelerate.framework :包含用于执行数字信号处理(DSP),线性代数,和图像处理的计算机接口。框架有点是,他们对所有存在的iOS设备的硬件配置进行优化。因此可以编写一次代码保证其高效运行在所有设备上。
  2. CoreBluetooth.framework: 蓝牙框架让开发人员能够使用蓝牙低功耗硬件。
  3. ExternalAccessory.framework: 外部设备框架提供了iOS的设备硬件支持。
  4. GSS.framework: 通用安全服务框架提供了iOS应用一套标准的安全相关服务。
  5. LocalAuthentication.framework: 本地认证框架可以使用ID来验证用户的身份。
  6. NetworkExtension.framework: 网络扩展框架为配置和控制虚拟专用网路提供支持。
  7. Security.framework: 安全框架可以使用它来保证应用程序管理数据的安全性。该框架提供了管理证书,公钥和私钥以及信任策略的接口。
  8. OSX Kernel: 系统内核。

Core Services
Core Services Layer核心服务层包含应用程序的基本系统服务。
提供:
Core Services

Media
Media Layer媒体层包含用于在应用中实现多媒体的图形,音频和视频技术。
Media Layer

Cocoa Touch ❤️❤️
Cocoa Touch Layer本次是应用程序开发的关键框架。他为我们提供了关键技术,如多任务,基于触摸输入,推送通知,许多高层次的系统服务等支持。
Cocoa Touch Layer

关于iOS系统内容较多,具体请参考官方文档:【iOS Technology Overview】

CalculatorDemo

简单的计算器demo,主要代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  @IBOutlet weak var display: UILabel!
    var userInTheMiddleOfTyping = false
    @IBAction func targetDigit(_ sender: UIButton) {
        let digit = sender.currentTitle! //容易是程序崩溃。Optional类型
        if userInTheMiddleOfTyping {
            let textCurrentlyInDisplay = display.text!
            display.text = textCurrentlyInDisplay + digit
        } else {
            display.text = digit
        }
        userInTheMiddleOfTyping = true
    }
    @IBAction func performOperation(_ sender: UIButton) {
        userInTheMiddleOfTyping = false
        if let mathematicalSymbol = sender.currentTitle //这种写法防止崩溃{
            if mathematicalSymbol == "π" {
                display.text = String(M_PI)
            }
        }
    }
   
  • Optional类型:可选类型, 可以有值,也可以没有值。Optional类型的值是不能被直接使用的,当需要的时候需要拆包,以表明Optional是一定有值的。之所以需要拆包其实Optional是一个枚举类型。
    显式拆包
    1
    2
    var str: String? = "Hello"
    str! //显式拆包
    隐式拆包
    1
    var str: String! = "Hello"
    告诉编译器:Optional值使用前,已经被初始化,保证有值,编译器帮我们做了一次拆包。

总结

本节课程主要讲解了iOS系统架构,编写了一个计算器demo。另外,Demo中讲解了一些Swift语法。关于iOS系统Cocoa Touch Layer有很多需要学习的知识点,后续继续学习整理。