iOS 簡單架構及運行流程

IOS裏面幾乎所有的可視化類都封裝在UIKit.framework裏面; 和Mac os系統一樣,都是基於Unix內核;

一、iOS系統框架

  1. Cocoa Touch層
    主要包含了大部分使用Objective-C的API,主要由Foundation和UIKit框架組成,Foundation提供了面向對象的文件訪問,網絡操作,數據,和集合類型;
  2. Media層
    Media層主要提供了一些基本的繪圖、聲音和視頻的技術支持,也包含繪圖用的Quartz、Core Audio、以及Core Animation;
  3. Core Services層
  4. Core OS層
    Core Services層和Core OS層主要提供了一些底層的支持。包括文件訪問、網絡協議、低級數據類型等;它們是C基礎的接口,包括Core Foundation、CFNetwork、Sqlite等API;

二、ApplicationBundle(應用程序包)

應用程序在編譯的時候,會生成一個app包,app包是文件系統中的一個目錄,把app中相關的文件集中在一起;app包主要包括應用程序的可執行文件和app所需要的資源文件等;
App包的組成部分

  • MyApp(可執行文件)
  • Icon.png(App圖標文件)
  • MainWindow.nib(主窗口xib文件)
  • Default.png(加載時圖片)
  • iTunesArtwork(iTunes圖片)
  • Info.plist(配置文件)
  • Resource files(資源文件)

三、程序執行流程及項目清單文件

  • main.m 程序的入口
  • xxx-Prefix.pch 預編譯文件,程序編譯的時候會自動爲我們導入UIKit等framework,所以在我們的程序中並沒有手動引入UIKit的頭文件
  • xxx-Info.plist 程序配置文件
  • InfoPlist.string 國際化文件
  • MyProject.app 最終的app
  • framework 程序用到的框架

1.程序執行順序
(1).UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
上面的代碼首先創建了一個UIApplication對象(每個應用程序都是一個UIApplication的實例);並且爲UIApplication指定一個代理委託(監控程序的運行,終止,進入前臺,後臺等過程);然後開啓一個事件循環,處理程序接收到的事件;

後兩個參數分別是應用程序類名(必須是UIApplication或者其子類)和應用程序代理對象類名(需要遵守UIApplicationDelegate協議);

2.UIApplicationDelegate方法的執行;
3.加載window;

四、UIApplication

每一個應用程序都是UIApplication或者其子類的實例,主要用於處理用戶事件,以及負責window的顯示,通常會給應用程序指定一個委託來監測程序的運行;UIApplicationDelegate是一個協議,定義了監測程序執行的方法,這些方法都有自己的觸發條件;
大致分爲幾類:程序啓動、活躍/非活躍、前/後臺切換、推送通知、內存警告;

didFinishLaunchingWithOptions // 程序啓動完畢,系統自動調用
applicationDidBecomeActive // 程序變爲活動狀態(能夠和用戶交互)
applicationWillResignActive // 程序將要推動活動狀態(失去焦點,不可交互)
applicationDidEnterBackground // 程序進入後臺(比如按了home鍵),需要在此方法中保存應用程序數據及狀態
applicationWillEnterForeground // 程序將要進入前臺,需要在此方法中還原程序狀態
applicationDidReceiveMemoryWarning // app接收到內存警告,需要在該方法中釋放不需要在內存
applicationWillTerminate // 程序退出(通常不會執行,如果想要執行此方法,需要在plist文件中配置Application does not run in background 爲YES),如果應用程序處於掛起狀態時無法調用此方法

五、UIView(視圖)及UIWindow(窗口)

真正負責將界面展現給用戶的其實是UIView及UIWindow,UIView表示屏幕上的一塊矩形區域,幾乎所有的屏幕上能看到的元素都是UIView或者其子類;
UIView負責渲染矩形區域的內容,響應區域中的觸摸事件,以及爲矩形區域添加動畫,視圖更多的時候用於管理一個或者多個視圖;如果父視圖位置發生改變,子視圖也會和父視圖一樣發生等距離位置改變,同理透明度也是一樣的;
UIWindow是IOS中的窗口類,它是UIView的子類,主要負責管理和協調各個視圖在設備屏幕上的展現,一個應用程序最好只有一個window;window需要在app啓動的時候進行加載,window的尺寸要與屏幕大小一致;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章