iOS開發①基礎

Xcode中的iOS工程模板

iOS工程模板分爲兩類-Application和Framework & Library。swift

Application類型

Application包含5個模板,具體以下所示:安全

  • Master-Detail Application:能夠構建樹形結構導航模式應用,生成的代碼中包含了導航控制器和表視圖控制器等。網絡

  • Page-Based Application:能夠構建相似電子書效果的應用架構

  • Single View Application:能夠構建簡單的單個視圖應用併發

  • Tabbed Application:能夠構建標籤導航模式的應用,生成的代碼中包含了標籤控制器和標籤欄等。app

  • Game: 能夠構建基於iOS的遊戲應用框架

Framework & Library

  • Cocoa Touch Framework 可讓開發者自定義應用於UIKit的框架ide

  • Cocoa Touch Static Library 可讓開發者建立基於Foundation框架的靜態庫。字體

Xcode中的iOS工程目錄

code中的iOS工程目錄

  • AppDelegate.swift類文件:應用程序委託對象動畫

  • ViewController.swift類文件:是視圖控制器類,在工程中扮演着根視圖和用戶事件控制類的角色

  • Main.storyboard文件:故事板文件

  • LaunchScreen.storyboard:應用啓動界面故事板文件

  • Assets.xcassets文件夾: 資源目錄,能夠用來管理圖片

  • Info.plist:工程屬性文件

  • Products組:工程將要生成的產品包

在訪問資源文件時,文件夾和組是有區別的。訪問文件夾中的資源時須要將文件夾做爲路徑。若是icon.png文件放在images文件夾下,則訪問它的路徑時images/icon.png,若是images是組,則訪問它的路徑是icon.png.

iOS應用生命週期

AppDelegate類在應用生命週期的不一樣階段會回調不一樣的方法。首先介紹iOS應用的5中狀態。

  • Not Running(非運行狀態):應用沒有運行或被系統終止

  • Inactive(前臺非活動狀態):應用正在進入前臺狀態,可是還不能接受事件處理

  • Active(前臺活動狀態):應用進入前臺狀態,能接受事件處理

  • Backgroud(後臺狀態):應用進入後臺狀態,依然可以執行代碼。若是有可執行的代碼,就會執行代碼;若是沒有可執行的代碼或者將可執行的代碼執行完畢,應用會立刻進入掛起狀態

  • Suspend(掛起狀態):被掛起的應用不能執行代碼。若是系統內存不夠,應用會被終止。

在應用狀態切換的過程當中,iOS系統會回調AppDelegate中的一些方法,而且發送一些通知。下面介紹幾個主要的方法和通知。

方法 本地通知 說明
application:didFinishLaunchingWithOptions UIApllicationDidFinishedLaunchingNotification 應用啓動並進行初始化時會調用該方法併發出通知。這個階段會實例化根視圖控制器
applicationDidBecomeActive UIApplicationDidBecomeActiveNotification 應用進入前臺並處於活動狀態時調用該方法併發出通知。這個階段能夠恢復UI的狀態
applicationWillResignActive UIApplicationWillResignActiveNotification 應用從活動狀態進入到非活動狀態時調用該方法併發出通知。這個階段能夠保存UI狀態
applicationDidEnterBackgroud UIApplicationDidEnterBackgroudNotification 應用進入後臺時調用該方法併發出通知。這個階段能夠保存用戶數據,釋放一些資源
applicationWillEnterForegroud UIApplicationWillEnterForegroudNotification 應用進入到前臺,可是尚未處於活動狀態時調用該方法併發出通知。這個階段能夠恢復用戶數據
applicationWillTerminate UIApplicationWillTerminateNotification 應用被終止時調用該方法併發出通知,但內存清除時除外,這個階段釋放一些資源,也能夠保存用戶數據

非運行狀態-應用啓動場景

場景描述:用戶點擊應用圖標時,多是第一次啓動這個應用,也多是應用終止後再次啓動。該場景的狀態躍遷過程共經歷兩個階段單個狀態:Not running -> Inactive -> Active。

  • Not running -> Inactive階段:調用application:didFinishLaunchingWithOptions方法,發出UIApllicationDidFinishedLaunchingNotification通知。

  • Inactive -> Active階段:調用applicationDidBecomeActive方法,發出UIApplicationDidBecomeActiveNotification通知。

點擊Home鍵-應用退出場景

場景描述:應用出於運行狀態(即Active狀態)時點擊Home鍵應用會退出。該場景的狀態變遷過程分爲兩種狀況:能夠在後臺運行或者掛起和不能夠在後臺運行或掛起,能夠根據工程屬性文件Info.plist中的屬性Application does not run in background來控制這兩種狀態。

應用能夠在後臺運行或者掛起

該場景的狀態變遷共經歷3個階段4個狀態:Activie -> Inactive -> Backgroud -> Suspend。

  • Activie -> Inactive階段:調用applicationWillResignActive方法,發出UIApplicationWillResignActiveNotification通知。

  • Inactive -> Backgroud階段:應用從非活動狀態進入到後臺(不涉及重點的方法和通知)。

  • Backgroud -> Suspend階段:調用applicationDidEnterBackground方法,發出UIApplicationDidEnterBackgroudNotification通知。

應用不能夠在後臺運行或掛起

該場景下的狀態變遷共經歷4個階段5種狀態:Activie -> Inactive -> Backgroud -> Suspend -> Not Running。

  • Activie -> Inactive階段:調用applicationWillResignActive方法,發出UIApplicationWillResignActiveNotification通知。

  • Inactive -> Backgroud階段:應用從非活動狀態進入到後臺(不涉及重點的方法和通知)

  • Backgroud -> Suspend階段:調用applicationDidEnterBackground方法,發出UIApplicationDidEnterBackgroudNotification通知

  • Suspend -> Not Running階段:調用applicationWillTerminate方法,發出UIApplicationWillTerminateNotification通知。

掛起從新運行場景

場景描述:掛起狀態的應用從新運行。該場景的狀態變遷過程共經歷三個階段4種狀態:Suspend -> Backgroud -> Inactive -> Active。

  • Suspend -> Backgroud階段:應用從掛起狀態進入到後臺(不涉及重點的方法和通知)

  • Backgroud -> Inactive:調用applicationWillEnterForeground方法,發出UIApplicationWillEnterForegroudNotification通知。

  • Inactive -> Active:調用applicationDidBecomeActive方法,發出UIApplicationDidBecomeActiveNotification通知。

內存清楚-應用終止場景

場景描述:應用在後臺處理完成時進入掛起狀態(這是一種休眠狀態),若是這時發出低內存警告,爲了知足其餘應用對內存的須要,該應用就會被清除內存從而終止運行。該場景的變遷過程爲:Backgroud -> Suspend -> Not running。

內存清除的時候應用終止運行。內存清除有兩種狀況,多是系統強制清楚內存,也多是由使用者從任務欄中手動清除。內存清除後若是應用再次運行,上一次的運行狀態不會被保存,相對於應用第一次運行。

在內存清除的場景下,應用不會調用任何方法,也不會發出任何通知。

iOS API 簡介

iOS的總體架構圖參見圖2-28,分爲4層-Cocoa Touch層,Media層,Core Service層和Core OS層。

Cocoa Touch層

Cocoa Touch層提供了構建iOS應用的一些基本系統服務(如多任務、觸摸輸入和推送通知等)和關鍵框架。

框架 前綴 說明
ConatactsUI CN 訪問通信錄相關UI類
EventKitUI EK 訪問日曆事件數據
GameKit GK 提供可以進行點對點通訊的網絡通訊API
iAd AD 廣告API
MapKit MK 地圖API
MessageUI MF 電子郵件消息相關API
PhotosUi PF 照片API
Twitter TW 提供發送Twitter API
UIKit UK 提供UI類
WatchKit Wk Apple Watch相關類

Media層

Media層提供了圖形、音頻、視頻和AirPlay技術等。

框架 前綴 說明
Assets Library Al 訪問圖片和視頻的API
AudioToolBox Audio 錄製或播放視頻、音頻流以及格式轉換
AudioUnit Audio、AU 使用內置音頻單元服務以及音頻處理模塊
AV Foundation AV 播放與錄製音頻和視頻的OC API
Core Audio Audio 錄製、製做、播放音頻的C語言接口
Core Graphics CG 提供Quartz 2D接口
Core Image CI 操做視頻和靜態圖像的接口
Core MIDI MIDI 處理MIDI數據的底層API
Core Text CT 渲染文本和處理字體的簡單、高效的C語言接口
Core Video CV 處理音頻和視頻的API
Image I/O CG 讀寫圖像數據類
GLKit GLK 構建複雜OpenGL ES應用的OC應用類
Media Player MP 播放接口
OpenAl AL 包含了OpenAL(跨平臺)的C接口
OpenGL ES GL 包含OpenGL ES(跨平臺的2D/3D圖形庫)的C語言接口
Quartz Core CA 提供動畫接口類
Sprite Kit SK 蘋果提供的基於2D遊戲的開發引擎
Scene Kit SCK 一種高級別的3D圖像框架,能建立3D動畫場景和特效

Core Services層

Core Services層提供了CloudKit、HealthKit、HomeKit、SQLite和XML支持等技術

框架 前綴 說明
Accounts AC 用於訪問用戶的Twitter帳戶
Contacts CN 訪問通信錄信息
AdSupport AS 得到iAd廣告標識
CFNetwork CF 提供了訪問Wi-Fi網絡和蜂窩移動網絡的API
Core Data NS 提供管理應用數據的ORM接口
CoreFoundation CF 最基本的框架包括數據集
Core Location CL 定位服務的API
CoreMedia CM 提供AV Foundation框架使用的底層媒體類型,能夠精確控制音頻或視頻的建立及展現
CoreMotion CM 接收和處理重力加速度以及其餘的運動操做
CoreTelephony CT 提供訪問電話基本信息的API
Event Kit EK 訪問日曆事件數據
Foundation NS 是OC最基本的框架
JavaScriptCore.framework JS 實現OC與JS的相互調用
MobileCoreServices UT 定義統一標識符類型(UIT)使用的底層類型
Newsstand Kit NK 提供在後臺下載雜誌和新聞的API接口
Pass Kit PK 提供訪問優惠券的API
QuickLock QL 提供預覽沒法直接查看的文件內容
Social SL 提供社交網絡訪問API,中國區提供新浪微博的API
Store Kit SK 提供處理應用內置收費的資金交易
SystemConfiguration SC 用於肯定設備的網絡配置,也能夠用於判斷某個主機服務是否可使用
Cloud Kit CK 開發iCloud應用的API
Health Kit HK 開發健康和健身等服務的API
Home Kit HM 可以與用戶家中鏈接的設備通訊並進行控制

Core OS層

Core OS層提供了一些低級功能,通常不直接使用它。

框架 前綴 說明
Accelerate AC 訪問重力加速計API
Core Bluetooth CB 訪問低功耗藍牙設備API
External Accessory EA 訪問外圍配件API接口
Generic Security Services GSS 提供一組安全相關的服務
Security CSSM 管理證書、公鑰、私鑰和安全信任策略的API
LocalAuthentication LA 提供用戶指定的安全策略進行安全認證
相關文章
相關標籤/搜索