自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iOS編程基礎(chǔ): Hello World App是如何運(yùn)作的?

移動開發(fā) iOS
我希望你享受了第一個iOS編程教程,同時已經(jīng)創(chuàng)造了你的第一個App。在進(jìn)入下一教程以及制作一個更復(fù)雜的App之前,我們有必要回過頭,分析這個Hello World App。對于你理解一些Objective-C語言的語法和App的內(nèi)部工作機(jī)制有很大幫助。

譯者注:

1. 由于這是技術(shù)文章,所以有些詞句使用原文,表達(dá)更準(zhǔn)確。

2. 由于水平有效,有些地方可能翻譯的不夠準(zhǔn)確,如有不當(dāng)之處,敬請批評指正。

我希望你享受了第一個iOS編程教程,同時已經(jīng)創(chuàng)造了你的第一個App。在進(jìn)入下一教程以及制作一個更復(fù)雜的App之前,我們有必要回過頭,分析這個Hello World App。對于你理解一些Objective-C語言的語法和App的內(nèi)部工作機(jī)制有很大幫助。

目前為止,想必你已經(jīng)按照教程完成了你的第一個Hello World App。不過,當(dāng)你完成了這個教程之后,你腦海里肯定冒出了更多疑問:

  • xib,.h,.m文件是做什么用的?
  • 在showMessage內(nèi)部的代碼是什么?用什么作用?
  • 當(dāng)你按下Hello World的按鈕發(fā)生了什么呢?按鈕是如何觸發(fā)了顯示消息的動作呢?
  • Xcode中的Run按鈕是如何運(yùn)作的?

我希望你已經(jīng)對Xcode IDE開發(fā)環(huán)境比較熟悉了,這樣我就不用再解釋一遍上面的內(nèi)容了。對于每個開發(fā)者來說,理解代碼的內(nèi)部細(xì)節(jié)和抓住基本概念對于iOS編程是很有必要的。對 于某些技術(shù)概念,如果你沒有絲毫的編程背景來說,理解一些技術(shù)概念是有一定難度的。但是,別擔(dān)心,這里僅僅是一個開始。如果你繼續(xù)學(xué)習(xí)后續(xù)的教程,寫出更 多的代碼,你就能更好的理解iOS編程。盡你所能努力學(xué)習(xí)更多知識吧!

Interface Builder, Header and Implementation Files

首先,.xib, .h, .m文件是什么呢?這是一位讀者提出的一個非常好的問題。在項目導(dǎo)航中,你應(yīng)該可以找到3種主要的文件類型:.xib, .h, .m。(如果你打開“Supporting Files”文件夾,你可以找到其他的文件類型,例如plist和framework。但到目前為此,我們先忘掉它們,在今后課程中我們會討論它們。)

.xib

  • 如果一個文件也有.xib的擴(kuò)展名,它們是Interface Builder文件,存儲了應(yīng)用的UI。當(dāng)你點擊了.xib文件,Xcode會自動的打開Interface Builder界面,你可以通過拖動和放下來編輯應(yīng)用的UI。如下圖所示:

Interface Builder in Xcode

Interface Builder in Xcode

.h and .m

  • .h擴(kuò)展名的文件表示這是頭文件,.m擴(kuò)展名表示是具體的實現(xiàn)。和其他大多數(shù)編程語言一樣,Objective-C的源碼也分為2部分:接口和實現(xiàn)。

為了便于你更好的理解這2者關(guān)系,我們拿電視遙控器打比方。我們可以很方便地使用無線遙控器調(diào)節(jié)電視的音量。你按下音量+按鈕增大揚(yáng)聲器的音量。切 換頻道時,你只需要按下頻道數(shù)字。那我來問問你,你知道當(dāng)你按下音量按鈕的背后發(fā)生了什么嗎?估計你不知道吧。我相信大部分人都不知道遙控器和揚(yáng)聲器之間 是如何通信的。我們僅僅知道的是,那個按鈕是用來調(diào)節(jié)音量的。在這里,按鈕就是接口,而按鈕之后的具體細(xì)節(jié)我們稱之為實現(xiàn)。

現(xiàn)在你應(yīng)該對接口和實現(xiàn)有了一個更深的理解。讓我們回到代碼,在Objective-C語言中,一個類的接口是放在.h文件中。我們使用語法標(biāo)示符@interface來聲明一個類的接口。看下HelloWorldViewController.h的具體實現(xiàn):

  1. @interface HelloWorldViewController : UIViewController 
  2.  
  3. -(IBAction)showMessage; 
  4.  
  5. @end 

HelloWorldViewController這個類名以“@interface”開頭。內(nèi)部則聲明了一個“showMessage”的實現(xiàn),也可以稱之為方法。

就像音量按鈕,顯然我們不知道showMessage這個方法是如何運(yùn)作的。你僅僅知道它是用于在屏幕上顯示一條信息。具體的實現(xiàn)則放在HelloWorldViewController.m文件中,如下所示:

  1. @implementation HelloWorldViewController 
  2.  
  3. // I've removed other methods for better reading. Focus on the showMessage method first. 
  4.  
  5. - (IBAction)showMessage  
  6.     UIAlertView *helloWorldAlert = [[UIAlertView alloc] 
  7.                                 initWithTitle:@"My First App" message:@"Hello, World!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
  8.  
  9.     // Display the Hello World Message 
  10.     [helloWorldAlert show]; 
  11.  
  12. @end 

正如你上面所示,你使用“@implementation”去聲明一個實現(xiàn)。在“showMessage”中,代碼用于定義在屏幕中彈出一條警告。 你不需要弄明白在“showMessage”的方法中每一行代碼具體含義。簡單來說,創(chuàng)建了一個以“My First App” 為標(biāo)題,“Hello, World”作為消息的UIAlertView。然后調(diào)用“show”方法去請求iOS用于在屏幕上顯示一個彈出消息。如下圖所示:

Hello World App

Hello World App

想必你已經(jīng)弄明白了接口和實現(xiàn)吧?

Behind the Touch and Tap

當(dāng)你按下 “Hello World”按鈕實際上發(fā)生了什么? “Hello World” 按鈕是如何調(diào)用 “showMessage” 方法去顯示“Hello World”的消息呢?

回想起你是如何在Interface Builder建立起“Hello World”按鈕和“sendMessage”的具體動作的關(guān)聯(lián)的。再次打開“HelloWorldViewController.xib” ,選擇“Hello World” 按鈕,在Utility區(qū)域點擊“Sent Events”按鈕打開發(fā)生事件。

Hello World Button Send Events

發(fā)送部分展示了所有的關(guān)于事件和動作的聯(lián)系。例如上述圖片所示,“Touch Up Inside” 事件就關(guān)聯(lián)到 “showMessage”的動作。在iOS中,app是事件驅(qū)動的??刂?目標(biāo)監(jiān)聽特定的動作,例如觸摸和按下。當(dāng)事件觸發(fā)之后,目標(biāo)就會調(diào)用預(yù)設(shè)的關(guān) 聯(lián)到事件的動作。

在我們的Hello World App中,當(dāng)用戶在按鈕上抬起手指, “Touch Up Inside”的事件就觸發(fā)了。結(jié)果,它會調(diào)用“showMessage”的動作去顯示 “Hello World” 的消息。

下圖很直觀的展示了剛才所描述的事件流:

Event and Message Flow of Hello World App

Event and Message Flow of Hello World App

Behind the Scene of the “Run” Button

當(dāng)你點擊“Run” 按鈕,Xcode就會載入模擬器,運(yùn)行你的App。但是在這個場景之后,發(fā)生了什么?作為一名程序員,你需要了解它的整個流程。

Event and Message Flow of Hello World App

整個流程可以分為3部分:編譯、打包和運(yùn)行。

編譯

  • 你可能會認(rèn)為iOS可以讀懂Objective-C代碼。大錯特錯,實際上,iOS只能讀懂機(jī)器碼。Objective-C代碼只是便于程序員去 讀和寫代碼。我們需要將Objective-C源碼翻譯成機(jī)器碼,這樣iOS才可以讀懂你的App的源碼。這個過程就稱之為編程。Xcode已經(jīng)自帶了編 譯器用于編譯源碼。

打包

  • 不同于其他源碼,一個App通常包含大量的資源文件,比如圖片,文本,xlib文件等等。所有的這些資源都必須要打包進(jìn)最終的App中。

我們通過把上述2個過程稱之為build。

Xcode-Build-Option

Run

  • 按下之后,啟動模擬器,載入你的App.

翻譯 By Long Luo

原文鏈接:iOS Programming Basic: How Does the Hello World App Work?

責(zé)任編輯:閆佳明 來源: longluo.github.io
相關(guān)推薦

2017-11-28 16:57:18

2012-08-27 09:10:05

JVMJava

2009-08-11 10:32:23

什么是Groovy

2011-03-14 09:33:35

Mono

2023-12-21 15:37:31

編程語言FortranC語言

2011-03-21 09:45:52

Hello WorldObjective-C生命周期

2021-03-30 13:48:47

WebAssemblyWeb瀏覽器編程語言

2021-02-15 15:36:04

采礦加密貨幣區(qū)塊鏈

2014-12-19 10:07:10

C

2017-11-23 17:45:46

Yii框架IntelYii框架深度剖析

2021-12-17 22:52:44

物聯(lián)網(wǎng)電信技術(shù)

2011-07-27 15:39:15

IOS IOS開發(fā)

2014-11-10 09:29:13

Google

2024-09-29 08:49:49

2009-07-30 13:21:17

Scala入門Hello World

2009-09-16 17:15:19

OSGi Bundle

2023-01-06 08:18:44

2023-09-04 07:30:03

Wasm匯編語言

2011-06-08 14:39:06

Qt 教程

2023-04-10 18:34:25

編程語言開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號