1 什麼是 OC 語言? OC 語言即面向對象語言,它擴展了 ANSI C 語言,將 SmallTalk 式的消息傳遞機制加入到 ANSI C 中.它是蘋果 OS 和 iOS 以及相關的 API,Cocoa 和 Cocoa Touch 的主要編程語言. 2 OC 語言的特點: 支持 C 語言語法,是 ...
1 什麼是 OC 語言?
OC 語言即面向對象語言,它擴展了 ANSI C 語言,將 SmallTalk 式的消息傳遞機制加入到 ANSI C 中.它是蘋果 OS 和 iOS 以及相關的 API,Cocoa 和 Cocoa Touch 的主要編程語言.
2 OC 語言的特點:
- 支持 C 語言語法,是 ANSI-C 語言的一個超集,是一種高效的編程語言.
- 是 C 語言面向對象的擴展,完全支持面向對象的特性.
- 簡潔易讀的編程風格,使編程和閱讀更加清晰.
- 相容性好,可以在項目中直接導入 C 和 C++ 的頭文件,也可以在文件中直接使用OC 和 C++ 編程.
3 iOS 的生態系統不僅僅指其軟體方面的豐富,更多指的是其設備的多樣性.
4 Core OS
是用 FreeBSD 和Mach所改寫的Darwin,是開源的符合 POSIX 標準的一個 UNIX 核心.該層包含所有 iOS 的基礎功能(所有的這些功能都是通過 C 語言的 API 來提供的).另外該層具有 UNIX 特點,因此當將 UNIX 上的功能移植到 iOS 上的時候用到Core OS 的 API.同時該層還提供了硬體和系統框架之間的介面,但出於安全考慮,只有有限的框架能使用.
5 Core services
它在 Core OS 的基礎上提供了更為豐富的功能,其中包括 Foundation.Framework 和 Core Foundation.Framework.之所以叫 Foundation 是因為,它提供了處理字串,排列,時間等基礎功能.).其中 Foundation 屬於 OC 是 API, 而 Core Foundation 屬於 C 的 API.另外 Core Sercies 還提供了Security(處理認證,密碼管理,安全性管理),Core Location(定位)SQLite(輕量級的資料庫),Address Book(處理電話本)等功能.
6 Media
即提供圖像,音樂,影片等多媒體功能.其中圖片包括2D(Quartz 2D) 和3D(Open GLES).音樂對應的模塊是Core Audio 和Open AL. 影片用 Media Player來支持.最後還提供了Core Animation動畫支持.
7 Cocoa Touch
它是 OC的 API其中最核心的部分的 UIKit.Framework,應用程式上的各種組件全部由它來提供實現.除此之外還負責多點觸摸.文字的輸出,圖片網頁的顯示,相機/文件的存取以及加速感應的部分.
8 swift
它繼承了 OC 的面向對象優點,同時又具有簡便的語法結構.它具有以下特點.
- 閉包的統一
- 元祖和多個返回值
- 泛型
- 快速而簡潔的迭代範圍/集合
- 支持的方法和擴展的協議
- 函數式的編程模式
- 不通過編譯即可查看效果
- 高效強大
- 安全
9 OC 和 Swift 之間的區別
- Swift句末不需要加分號,除非一行中寫幾行代碼
- Swift沒有 main 函數,函數的執行是從上往下執行.
- Swift沒有. h 和. m 文件只有. Swift文件.
- Swift沒有地址的概念
- Swift的數據類型會自動判斷(變數用 var, 常量用let)
- 強制類型轉換: OC的強轉à(int)a, Swift的強轉àint(a)
- 整數的數據類型可以通過 .min 和 .max來獲取最大和最小值
- 定義類型:OC:Typedef int Myint Swift:Typealiaes Myint = int
- Swift的摸除取餘運算支持小數
- Swift中 BOOL 類型中不在是 OC 中的非0即真,而是 true 為真 false 為假
- Swift的賦值運算沒有返回值
- Swift可以多對多賦值: let(x,y) = (1,2)
- Swift的迴圈語句必須加{},就算只有一行代碼,也要加
- Swift的 switch 語句後面可以跟任何數據類型,並且裡面不用 break
註:如果不想要break的效果 即後面的都想執行 那就寫上關鍵字 fallThrough,但在fallThrough後面就不能再定義常量變數了
10 swift 獨有的特點
- 運算: a…b 表示[a,b] a..<b 表示(a,b)
- 獨有的溢出運算符:即當你賦值的時候大於其最大值範圍,則會報錯
- Swift獨有元祖類型
Var a = (x:15,y:20.0)
其中 a 就是元祖名,裡面有兩個元素 x和 y.
取出賦值:a.x = 10或者 a.0 = 10(預設有下標)
修改類型: var a = (int,string) = (10,21.0)
列印時: printIn(a) = (10,20.0)
用下劃線省略不需要的元素 var a = (_,20.0)
- Switch 語句中與元祖類型的時候,還可以用類似 SQL 語句的語法,添加過濾條件.
- 函數的外部參數名
原來是形式: func Sum(num1:int,num2:int) àint{} 調用: Sum(10,20)
現在:func Sum(numOne num1:int,numTwo num2:int) àint{}
調用: Sum(numOne:10,numTwo:20)
- 函數的預設參數值
func addPerson(name:string,age:Int = 18) à string{}
調用: addPerson(“tom”)
註:修改年齡時 addPerson(“Tom”,age:19)