【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 結構


這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

nano 文字編輯器

16天記下7000單字

startActivityForResult is deprecated 已廢棄替代解決方式