星期六, 5月 20, 2017

【iOS 中文開放式課程】iOS APP 架構與生命週期


我們需要您的贊助


Cocoa touch 觸碰層

主要提供給與用戶互動的框架:UI元件、事件管理、通知中心、地圖等。主要包含以下框架:
  • UIKit(UI元件)
  • EventKit(日曆事件提醒)
  • Notification Center(通知中心)
  • MapKit(地圖顯示)
  • Address Book(聯絡人)
  • iAd(廣告)
  • Message UI(郵件與簡訊)
  • PushKit(推播工具)

Media 多媒體層

主要提供處理圖像、音效和視訊的引擎框架。主要包含以下框架:
  • Core Graphics、Core Image、Core Animation、OpenGL ES (圖像)
  • Core Audio、 AV Foundation、OpenAL(音效)
  • AV Foundation、Core Media (視訊)

Core Services 核心服務層

主要提供核心的系統服務,例如網絡訪問、瀏覽器引擎、定位、文件訪問、資料庫訪問等。主要包含以下框架:
  • CFNetwork(網絡訪問)
  • Core Data(數據存儲)
  • Core Location(定位功能)
  • Core Motion(重力加速度,陀螺儀)
  • Foundation(基礎功能,如:NSString)
  • Webkit(瀏覽器引擎)
  • JavaScript(JavaScript引擎)

Core OS 核心作業系統層

主要提供核心作業系統的服務,如操作系統內部核心服務、本地端認證、安全、加速等。
  • Accelerate 加速
  • System 操作系統內核服務(線程、文件系統、數學計算等)
  • LocalAuthentication 本地認證(指紋識別驗證等)
  • Security 安全(提供管理證書、公鑰、密鑰等的接口)



MVC

Model : 資料模型
Controller : 控制資料在畫面中顯示的邏輯處理
View : UI元件,畫面顯示
  • Model 不會直接與 View 溝通,會透過 Controller
  • Controller 是個中間人角色,可以直接跟 View 和 Model 溝通。
  • Controller與 View 透過 outlet 連接。例如:control + 拖拽一個控件到 UIViewController 中,建立outlet連接,然後我們就可以在 UIViewController 中控制 UIView。
  • View 與 Controller 則透過綁定的 action 和 target 來實現。例如一個按鈕可以綁定點擊事件到一個 target 的 action (action通常為@selector(func)這種格式),action為事件發生後的處理方法,而target則通常為對應的Controller)。
  • View 透過設置 data source 和 delegate 為 Controller 來委託,Controller從Model中獲取資料數據,例如:UITableView中就會用到代理。
  • Model要跟Controller通信則可以通過Notification和KVO(觀察者模式)機制來實現。

  • 主運行循環中的處理事件

使用者操作裝置,相關的操作事件都會被系統生成並通過UIKit的指定端口分發。事件在內部排成隊列(event queue),一個個的分發到 Main run loop去做處理。
UIApplication對像是第一個接收到事件的對象,它決定事件如何被處理。觸碰事件分發到主窗口,窗口再分發到對應出發觸碰事件的View 上。其他的事件通過其他途徑分發給其他對像變量做處理。
常見的事件觸碰 (Touch),遠程操控事件(Remote control)都是由app的responder objects對象處理的。Responder objects在你的app裡到處都是,比如:UIApplication對象。view對象,view controller對象,都是resopnder objects。
大部分事件的目標都指定了resopnder object,不過事件也可以傳遞給其他對象。比如,如果view對像不處理事件,可以傳給父類view或者view controller。
大多數的事件通過使用main run loop來分發,但有些不是。有些事件被發送到一個delegate對像或傳遞到你提供的block中。
  • 五種應用程式運行狀態

  • Not running APP尚未開啟或運行
  • Inactive 在前台運行,但沒有接收到事件。在沒有事件處理情況下程序通常停留在這個狀態
  • Active 在前台運行而且接收到了事件。這也是前台的一個正常的模式
  • Backgroud 在後台執行程式,大多數程序進入這個狀態後會在在這個狀態上停留一會。時間到之後會進入Suspended 狀態。有的程序經過特殊的請求後可以長期處於Backgroud狀態,例如播放音樂。
  • Suspended 程序在後台且不能執行代碼。系統會自動把程序變成這個狀態而且不會發出通知。當Suspended時,程序還是停留在內存中的,當系統內存低時,系統就把掛起的程序清除掉,為前台程序提供更多的內存。
  • View Controller 生命週期


  • 開啟APP至前景


  • 開啟 APP 程序至背景


  • 處理中斷


  • 從背景轉到前景


  • 從前景到背景


  • view controller 結構


0 意見 :

張貼留言

回覆意見時,麻煩輸入一下暱稱
(隨便取個名字也好~ ^_^)
好讓我方便回覆您的問題,
選擇「名稱/網址」輸入您的暱稱,
麻煩一下,謝謝大家。

關閉廣告 [X]