.h副檔名的檔案表示這是標頭檔,.m副檔名表示是具體的實現。和其他大多數程式設計語言一樣,Objective-C的源碼也分為2部分:介面和實現。為了便於你更好的理解這2者關係,我們拿電視遙控器打比方。我們可以很方便地使用無線遙控器調節電視的音量。你按下音量+按鈕增大擴音器的音量。切換頻道時,你只需要按下頻道數字。那我來問問你,你知道當你按下音量按鈕的背後發生了什麼嗎?估計你不知道吧。我相信大部分人都不知道遙控器和擴音器之間是如何通訊的。我們僅僅知道的是,那個按鈕是用來調節音量的。在這裡,按鈕就是介面,而按鈕之後的具體細節我們稱之為實現。
現在你應該對介面和實現有了一個更深的理解。讓我們回到代碼,在Objective-C語言中,一個類的介面是放在.h檔案中。我們使用文法標示符@interface來聲明一個類的介面。看下HelloWorldViewController.h的具體實現:
@interface HelloWorldViewController : UIViewController-(IBAction)showMessage;@end
HelloWorldViewController這個類名以“@interface”開頭。內部則聲明了一個“showMessage”的實現,也可以稱之為方法。
就像音量按鈕,顯然我們不知道showMessage這個方法是如何運作的。你僅僅知道它是用於在螢幕上顯示一條資訊。具體的實現則放在HelloWorldViewController.m檔案中,如下所示:
@implementation HelloWorldViewController// I've removed other methods for better reading. Focus on the showMessage method first.- (IBAction)showMessage { UIAlertView *helloWorldAlert = [[UIAlertView alloc] initWithTitle:@My First App message:@Hello, World! delegate:nil cancelButtonTitle:@OK otherButtonTitles:nil]; // Display the Hello World Message [helloWorldAlert show];}@end
正如你上面所示,你使用“@implementation”去聲明一個實現。在“showMessage”中,代碼用於定義在螢幕中彈出一條警告。你不需要弄明白在“showMessage”的方法中每一行代碼具體含義。簡單來說,建立了一個以“My First App” 為標題,“Hello, World”作為訊息的UIAlertView。然後調用“show”方法去請求iOS用於在螢幕上顯示一個彈出訊息。如所示:
Hello World App
想必你已經弄明白了介面和實現吧?
Behind the Touch and Tap當你按下 “Hello World”按鈕實際上發生了什嗎? “Hello World” 按鈕是如何調用 “showMessage” 方法去顯示“Hello World”的訊息呢?
回想起你是如何在Interface Builder建立起“Hello World”按鈕和“sendMessage”的具體動作的關聯的。再次開啟“HelloWorldViewController.xib” ,選擇“Hello World” 按鈕,在Utility地區點擊“Sent Events”按鈕開啟發生事件。
發送部分展示了所有的關於事件和動作的聯絡。例如上述圖片所示,“Touch Up Inside” 事件就關聯到 “showMessage”的動作。在iOS中,app是事件驅動的。控制/目標監聽特定的動作,例如觸摸和按下。當事件觸發之後,目標就會調用預設的關聯到事件的動作。
在我們的Hello World App中,當使用者在按鈕上抬起手指, “Touch Up Inside”的事件就觸發了。結果,它會調用“showMessage”的動作去顯示 “Hello World” 的訊息。
很直觀的展示了剛才所描述的事件流:
Event and Message Flow of Hello World App
Behind the Scene of the “Run” Button當你點擊“Run” 按鈕,Xcode就會載入模擬器,運行你的App。但是在這個情境之後,發生了什嗎?作為一名程式員,你需要瞭解它的整個流程。
整個流程可以分為3部分:編譯、打包和運行。
編譯
- 你可能會認為iOS可以讀懂Objective-C代碼。大錯特錯,實際上,iOS只能讀懂機器碼。Objective-C代碼只是便於程式員去讀和寫代碼。我們需要將Objective-C源碼翻譯成機器碼,這樣iOS才可以讀懂你的App的源碼。這個過程就稱之為編程。Xcode已經內建了編譯器用於編譯源碼。打包
- 不同於其他源碼,一個App通常包含大量的資源檔,比片,文本,xlib檔案等等。所有的這些資源都必須要打包進最終的App中。
我們通過把上述2個過程稱之為build。
Run
- 按下之後,啟動模擬器,載入你的App.Long Luo created at 19:22 ~ 21: 06 May 5th, 2014 @Shenzhen, China.
點擊開啟連結