第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的值