詳解iPhone應用程序事件處理及程序包結(jié)構
iPhone應用程序事件處理及程序包結(jié)構是本文介紹的內(nèi)容,主要介紹了詳細講解了 事件處理循環(huán)和iPhone程序包結(jié)構,先來詳細講解。
事件處理循環(huán)
UIApplicationMain處理完程序初始化以后,他會開啟時間出來循環(huán)和屏幕繪制循環(huán)。過程如下圖:
當用戶與iPhone設備交互時,iPhoneOS會檢測觸摸事件并把它放到事件隊列中。負責事件處理的UIApplication對象每次從隊列頂部取出事件,并把它傳遞給最適合處理它的對象。例如在按鈕上的點擊事件會被傳遞給相應的按鈕對象。時間也可以被傳遞給控制器或其他并非直接處理改事件的其他對象。
在iPhoneOS的Multi-Touch事件模型中,觸摸數(shù)據(jù)被封裝到單獨的事件對象中(UIEvent).為了跟蹤某個觸摸,事件對象包含若干個觸摸對象(UITouch),每一個觸摸對象代表一個手指在屏幕上的觸摸。當用戶將手指放到屏幕上,移動手指最終離開屏幕,系統(tǒng)會將每一個手指的變動提交給相應的觸摸對象。
當啟動一個程序時,系統(tǒng)會為程序創(chuàng)建一個過程和一個單獨的線程。這個初始線程會變成程序的主線程。UIApplication就在此啟動主循環(huán)并配置程序的事件處理代碼。下圖展示了事件處理代碼和主線程之間的關系,如圖:
觸摸事件被系統(tǒng)加入到隊列末尾,直到它被程序的主循環(huán)處理。
iPhone程序包結(jié)構
當build iPhone程序時,Xcode會將它打成一個包。這個包是文件系統(tǒng)下的一個目錄用于將相關資源放到一起。一個iPhone程序包包括可執(zhí)行程序和程序使用的各種資源(例如程序圖標、其他圖片和本地化資源等)。下面我們逐個看一下iPhone程序包里到底有什么?
MyApp
盛放程序代碼的可執(zhí)行文件。此文件的名稱與工程的名稱相同。這個文件是必須的。
Settings.bundle
Settings.bundle是一個像設置程序(Settings Application)添加設置選項的一組文件包。這個文件包中包含有屬性列表和其他用于設置和現(xiàn)實屬性的資源。
Icon.png
Icon.png是一張57*57的png圖片,用于在iPhone的主界面上作為程序圖標代表你的程序。這張圖片不需要有其他附加特效,系統(tǒng)會自動添加這些效果。此文件是必須的。
Icon-Setting.png
Icon-Setting.png是一張29*29的png圖片,用于在設置程序中作為圖標代表你的程序。如果你的程序有Settings.bundle,這個圖標將會顯示在程序名的旁邊。如果你沒有設置這張圖片,系統(tǒng)會將Icon.png縮放來代替。
MainWindow.nib
MainWindow.nib保存在程序啟動時需要加載的默認的界面對象。一般來說,MainWindow.nib保存著程序主窗口對象和程序的代理對象的實例。其他界面對象要么從別的.nib文件載入,要么通過代碼編程實現(xiàn)。
Default.png
Default.png是一張480*320的png圖片用于在程序啟動時顯示。啟動時,系統(tǒng)會用這張圖片作為臨時背景,直到程序載入了他的窗口和用戶界面。
iTunesArtwork
這是一個512*512的圖標用于那些用ad-hoc方式發(fā)售的程序。一般來說,這個圖標由App Store提供;因為通過ad-hoc方式分銷的軟件不通過App Store,但它必須在程序保重顯示。iTunes用這個圖標來顯示你的軟件。(這張圖片必須與提交給App Store的圖片(jpg或png格式)相同。文件名必須為iTunesArtwork,并且不能有后綴。)
Info.plist
Info.plist是程序的信息屬性列表。這個文件用鍵-值的形式定義了程序的屬性,例如Bundle ID、版本號、顯示名稱等。
其他資源文件
非本地化資源放在包的最上層。程序可以任意使用非本地化資源,不管用戶選擇的語言。
*.lproj語言目錄
本地化資源被放到一個以ISO639-1語言所寫,以.lproj為后綴的目錄中(例如en.proj, fr.proj保存著與英語和法語相關的本地化資源)。
小結(jié):詳解iPhone應用程序事件處理及程序包結(jié)構的內(nèi)容介紹完了,希望通過本文的學習能對你有所幫助!