天天看點

《iOS 9 開發指南》——第1章,第1.4節iOS 9中的常用開發架構

本節書摘來自異步社群《ios 9 開發指南》一書中的第1章,第1.4節 ios 9中的常用開發架構,作者 管蕾,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

1.4 ios 9中的常用開發架構

ios 9 開發指南

圖檔 2 知識點講解:CD光牒:視訊知識點第1章 ios 9中的常用開發架構.mp4

為了提高開發ios程式的效率,除了可以使用xcode內建開發工具之外,還可以使用第三方提供的架構,這些架構為我們提供了完整的項目解決方案,是由許多類、方法、函數和文檔按照一定的邏輯組織起來的集合,以便使研發程式變得更容易。在osx下的mac作業系統中,大約存在80個架構,這些架構可以用來開發應用程式,處理mac的address book結構、刻制cd、播放dvd、使用quicktime播放電影和播放歌曲等。

在ios的衆多架構中,其中有兩個最為常用的架構:foundation架構和cocoa架構。

1.4.1 foundation架構簡介

在osx下的mac作業系統中,為所有程式開發奠定基礎的架構稱為foundation架構。該架構允許使用一些基本對象,如數字和字元串,以及一些對象集合,如數組、字典和集合。其他功能包括處理日期和時間、自動化的記憶體管理、處理基礎檔案系統、存儲(或歸檔)對象以及處理幾何資料結構(如點和長方形)。

foundation頭檔案的存儲目錄是:

/system/library/frameworks/foundation.framework/headers

上述頭檔案實際上與其存儲位置的其他目錄相連結。請讀者檢視這個目錄中存儲在系統上的foundation架構文檔,熟悉它的内容和用法簡介。foundation架構文檔存儲在我們計算機系統中(位于/develop/documentation目錄中),另外apple網站上也提供了此說明文檔。大多數文檔為html格式的檔案,可以通過浏覽器,同時也提供了acrobat pdf檔案。這個文檔中包含foundation的所有類及其實作的所有方法和函數的描述。

如果正在使用xcode開發程式,可以通過xcode的help菜單中的documentation視窗輕松通路文檔。通過這個視窗,可以輕松搜尋和通路存儲在計算機本機中或者線上的文檔。如果正在xcode中編輯檔案并且想要快速通路某個特定頭檔案、方法或類的文檔,可以通過高亮顯示編輯器視窗中的文本并右鍵單擊的方法來實作。在出現的菜單中,可以适當選擇find selected text in documentation或者find selected text in api reference。xcode将搜尋文檔庫,并顯示與查詢相比對的結果。

看一看它是如何工作的。類nsstring是一個foundation類,可以使用它來處理字元串。假設正在編輯某個使用該類的程式,并且想要獲得更多關于這個類及其方法的資訊,無論何時,當單詞nsstring出現在編輯視窗時,都可以将其高亮顯示并右鍵單擊。如果從出現的菜單中選擇find selected text in api reference,會得到一個外觀與圖1-26類似的文檔視窗。

如果向下滾動标有nsstring class reference的面闆,将發現(在其他内容中間)一個該類所支援的所有方法的清單。這是一個能夠獲得有關實作哪些方法等資訊的便捷途徑,包括它們如何工作以及它們的預期參數。

讀者們可以線上通路developer.apple.com/referencelibrary,打開foundation參考文檔(通過cocoa、frameworks和foundation framework reference連結),在這個站點中還能夠發現一些介紹某些特定程式設計問題的文檔,例如記憶體管理、字元串和檔案管理。除非訂閱的是某個特定文檔集,否則線上文檔要比存儲在計算機硬碟中的文檔從時間上講更新一些,如圖1-26所示。

《iOS 9 開發指南》——第1章,第1.4節iOS 9中的常用開發架構

在foundation架構中包括了大量可供使用的類、方法和函數。在mac os x上,有125個可用的頭檔案。作為一種簡便的形式,我們可以使用如下代碼頭檔案。

因為foundation.h檔案實際上導入了其他所有foundation頭檔案,是以不必擔心是否導入了正确的頭檔案,xcode會自動将這個頭檔案插入到程式中。雖然使用上述代碼會顯著地增加程式的編譯時間,但是通過使用預編譯的頭檔案,可以避免這些額外的時間開銷。預編譯的頭檔案是經過編譯器預先處理過的檔案。在預設情況下,所有xcode項目都會受益于預編譯的頭檔案。在本章使用每個對象時都會用到這些特定的頭檔案,這會有助于我們熟悉每個頭檔案所包含的内容。

1.4.2 cocoa架構簡介

application kit架構包含廣泛的類和方法,它們能夠開發互動式圖形應用程式,使得開發文本、菜單、工具欄、表、文檔、剪貼闆和視窗等應用變得十分簡便。在mac os x作業系統中,術語cocoa是指foundation架構和application kit架構。術語cocoa touch是指foundation架構和uikit架構。由此可見,cocoa是一種支援應用程式提供豐富使用者體驗的架構,它實際上由如下兩個架構組成。

foundation架構。

application kit(或appkit)架構。

其中後者用于提供與視窗、按鈕、清單等相關的類。在程式設計語言中,通常使用示意圖來說明架構最頂層應用程式與底層硬體之間的層次,圖1-27所示就是一個這樣的圖。

《iOS 9 開發指南》——第1章,第1.4節iOS 9中的常用開發架構

user:使用者。

application:應用程式。

cocoa(foundation and appkit frameworks):cocoa(foundation和appkit架構)。

application services:應用程式服務。

core services:核心服務。

mac os x kernel:mac os x核心。

computer resources(memory, disk,display, etc.):計算機資源(記憶體、磁盤、顯示器等)。

核心以裝置驅動程式的形式提供與硬體的底層通信,它負責管理系統資源,包括排程要執行的程式、管理記憶體和電源,以及執行基本的i/o操作。

核心服務提供的支援比它上面層次更加底層或更加“核心”。例如,在mac os x中主要包含了對集合、網絡、調試、檔案管理、檔案夾、記憶體管理、線程、時間和電源的管理。

應用程式服務層包含對列印和圖形呈現的支援,包括quartz、opengl和quicktime。由此可見,cocoa層直接位于應用程式層之下。正如圖1-27中指出的那樣,cocoa包括foundation和appkit架構。foundation架構提供的類用于處理集合、字元串、記憶體管理、檔案系統、存檔等。通過appkit架構中提供的類,可以管理視圖、視窗和文檔等使用者界面。在很多情況下,foundation架構為底層核心服務層(主要用過程化的c語言編寫)中定義的資料結構定義了一種面向對象的映射。

cocoa架構用于mac os x桌面與筆記本電腦的應用程式開發,而cocoa touch架構用于iphone與itouch的應用程式開發。cocoa和cocoa touch都有foundation架構。然而在cocoa touch下,uikit代替了appkit架構,以便為很多相同類型的對象提供支援,如視窗、視圖、按鈕和文本域等。另外,cocoa touch還提供使用加速器(它與gps和wi-fi信号一樣都能跟蹤位置)的類和觸摸式界面,并且去掉了不需要的類,如支援列印的類。

1.4.3 ios程式架構

總的來說ios程式有兩類架構:一類是遊戲架構,另一類是非遊戲架構。接下來将要介紹的是非遊戲架構,即基于iphone使用者界面标準控件的程式架構。

典型的ios程式包含一個window(視窗)和幾個uiviewcontroller(視圖控制器),每個uiviewcontroller可以管理多個uiview(在iphone裡你看到的、感覺到的都是uiview,也可能是uitableview、uiwebview和uiimageview等)。這些uiview之間如何進行層次疊放、顯示、隐藏、旋轉和移動等都由uiviewcontroller進行管理,而uiviewcontroller之間的切換,通常情況是通過uinavigationcontroller、uitabbarcontroller或uisplitviewcontroller進行切換。

繼續閱讀