使用Xcode創建一個傳說中的HelloWorld,剖析項目組成並真機測試。 ...
iOS基礎 01 構建HelloWorld,剖析並真機測試
前言:
從控制台輸出HelloWorld是我們學習各種語言的第一步,也是我們人生中非常重要的一步。
多年之後,我希望我們仍能懷有學習上進的心情,繼續以HelloWorld去認識這世界上更多的東西。
本篇以HelloWorld作為切入點,向大家系統介紹什麼事iOS應用以及如何使用Xcode創建iOS應用。
目錄:
1.1. 設計界面
1.2. 真機測試
2.1. Application類型
2.2. Framework&Library類型
2.3. Other類型
3. 應用剖析
4. 最後再扯個犢子
1. 創建HelloWorld工程
啟動Xcode,然後點擊File-New-Project菜單,或直接點擊“Create a new Xcode project”:
在打開的Choose a template for your new project界面中選擇Single View Application工程模板:
接著點擊Next按鈕,然後提示輸入項目名稱等信息:
這裡我們可以按照上圖並結合自己的實際情況和需要輸入相關內容。
下麵簡要介紹一下上圖中各個選項:
選項 | 說明 |
Project Name | 工程項目的名稱。 |
Organization Name | 公司或組織的名稱。 |
Organization Identifier |
公司或組織的標識(很重要)。 一般情況下,這裡輸入的是公司或組織的功能變數名稱(如com.geeksss)。寫法類似於Java中的包名。 |
Bundle Identifier |
捆綁標識符(很重要)。該標識符由Project Name+Organization Identifier構成。 因為在App Store上發佈應用時會用到它,所以它的命名不可重覆。 |
Language |
開發語言選擇。 這裡可以選擇開發應用所使用哦的語言,Xcode 6中可以選擇Swift和Objective-C。 |
Devices |
選擇設備。可以構建基於iPhone或iPad的工程,也可以構建通用工程。 通用工程是指一個工程在iPhone和iPad上都可以正常運行。 |
設置完相關的工程選項後,點擊Next按鈕,根據提示選擇存放項目文件的位置:
選擇完存放路徑之後,點擊Create按鈕,項目就創建完畢了。
在項目資源列表中選擇Main.storyboard,即可在編輯區中打開對應的設計器:
在右下角的對象庫中選擇Label,將其拖拽到View設計界面上並調整其位置。
雙擊Label,使其處於編輯狀態(也可以通過控制項的屬性來設置),在其中輸入HelloWorld:
添加Label控制項後,需要設置Label控制項的位置。
拖拽Label控制項,此時會出現藍色的虛線,說明該Label現在處於水平居中位置:
但是如果現在運行該實例,我們會發現Label並非居中,還需要為Label添加Auto Layout約束。
關於Auto Layout約束相關的內容,等後續再專門兒介紹吧。
我們選擇工具欄中的Resolve Auto Layout Issues(解決Auto Layout問題)按鈕,在彈出的菜單中選擇Add Missing Constrains(添加缺少約束):
添加完成後,Label控制項的上面和下麵會出現兩條藍色豎線:
至此,整個工程創建完畢。
如圖,選擇運行的模擬器或設備,然後點擊左上角的運行按鈕,即可看到運行結果:
點擊運行後,如果是真機測試,第一次會提示輸入您的Apple ID帳號,輸入即可。完事兒就會在手機桌面上看到您的應用:
但是當我們打開時,提示該應用來自不受信任的開發者,打開受限。
畢竟我也沒有購買開發者證書。。呵呵:
這裡我們按照提示,找到設置:
通用:
設備管理:
在開發商列表中選擇你剛剛在Xcode中輸入的那個帳號:
然後會看到該帳號所有應用的列表,點擊信任該開發者:
然後會有一個提示,確定要信任這家伙嗎?確定即可:
然後我們會看到咱的應用已經通過驗證了:
重新回到桌面,點擊啟動應用,OK,激動的一個界面映入眼帘:
雖然界面很磕砷,並不高大上吧。但是我們在沒有輸入任何代碼的情況下,就已經利用Xcode工具的Single View Application模板創建了一個工程,併成功運行。
Xcode之強大可見一斑。
2. Xcode中的iOS工程模板
剛剛我們創建項目的時候可以看到,iOS工程模板大概分為3類:Application、Framework&Library和Other。
下麵將分別介紹這三類模板:
2.1. Application類型
我們大部分的開發工作都是從使用Application類型模板創建iOS程式開始的。該類型共包含5個模板,具體如下:
模板名稱 | 模板介紹 |
Master-Detail Application | 可以構建樹形結構導航模式應用,生成的代碼包含了導航控制器和表視圖控制器等。 |
Game | 可以構建基於iOS的游戲應用。 |
Page-Based Application | 可以構建類似於電子書效果的應用,這是一種平鋪導航。 |
Single View Application | 可以構建簡單的單個視圖應用。 |
Tabved Application | 可以構建標簽導航模式的應用,生成的代碼包含了標簽控制器和標簽欄等。 |
2.2. Framework&Library類型
Famework&Library類型的模板如圖,它可以構建基於Cocoa Touch Framework和Cocoa Touch Static Library的應用:
Cocoa Touch Framework可以讓開發者自定義應用於UIKit的框架,而Cocoa Touch Static Library可以讓開發者創建基於Framework框架的靜態庫。
由於代碼安全和多個工程重用代碼的考慮,我們可以將一些類或者函數編寫成靜態庫。
靜態庫不能獨立運行,編譯成功時會生成名為libXXX.a的文件(例如libHelloWorld.a)。
2.3. Other類型
利用該類型,我們可以構建應用內購買內容包(In-App Purchase Content)和空工程。
如圖,使用應用內購買內容包,可以幫助我們構建具有內置收費功能的應用:
我們可以根據需要選用不同的工程模板,這可以大大減少工作量。
3. 應用剖析
在創建HelloWorld的過程中,生成了很多文件(展開Xcode左邊的項目導航視圖可以看到),如圖:
導航視圖下有HelloWorld、HelloWorldTests、HelloWorldUITests和Products四個組。
其中HelloWorld組中放置的是HelloWorld項目工程的重要代碼,而HelloWorldTests組中放置的是HelloWorld程式的單元測試代碼,HelloWorldUITest組中放置的是自動測試UI與交互的測試代碼,Products組中放置的是編譯之後的工程文件。
下麵,咱們重點介紹一下HelloWorld組中的項目內容。
在HelloWorld組中,有兩個類AppDelegate和ViewController,兩個界面佈局文件Main.storyboard和LaunchScreen.xib,以及一個組Supporting Files。
Main.storyboard文件是故事板文件(下篇重點介紹),LaunchScreen.xib是應用啟動界面的xib文件。故事板文件和xib文件比較類似。
我們主要的編碼工作就是在AppDelegate和ViewController這兩個類中進行的,它們的類圖如圖所示:
AppDelegate是應用委托對象,它繼承了UIResponder類,並實現了UIApplicationDelegate委托協議。
UIResponder類可以使子類AppDelegate具有處理相應事件的能力,而UIApplicationDelegate委托協議使AppDelegate能夠成為應用程式委托對象,這種對象能夠響應應用程式的生命周期。
相應地,AppDelegate的子類也可以實現這兩個功能。
ViewController類繼承自UIViewController類,它是視圖的控制器類,在工程中扮演著根視圖和用戶事件控制器類的角色。
AppDelegate類是應用程式委托對象,這個類中繼承的一系列方法在應用生命周期的不同階段會被回調,其定義如下:
啟動HelloWorld時,首先會調用上圖畫圈的application:didFinishLaunchingWithOptions方法,其它方法我們後續再詳細介紹。
在項目導航視圖中,我們可以看到還有Images.xcassets文件,它可以放置工程的圖片。
Supporting Files組只有一個Info.plist文件,該文件是工程屬性描述文件,其中保存著工程的屬性設置。
Products組是工程要生車功能的產品包。
說明:
在訪問資源文件時,文件夾和組是有區別的,文件夾中的資源在訪問時是需要將文件夾作為路徑的。
如果icon.png文件放在image文件夾下,則訪問它的路徑是“image/icon.png”;如果image是組,則訪問它的路徑是“icon.png”。
4. 最後再扯個犢子
沒有結尾總覺得不好看。。。
如果本文對您有幫助,不要忘記戳一下右下角的大拇指哦,呵呵。