Swift的一些翻譯3:Hello World App的解釋

Chapter 4編程

Hello World App的解釋swift

作一個app簡單嗎?我但願你享受第一章的閱讀而且已經制做了你的第一個iPhone app.
app

在咱們繼續探索iOS SDK以前,咱們暫停一下來近距離的看下這個Hello World app.這對你理解Swift語言的基礎和app的內部工做狀況來講頗有幫助.
框架

迄今爲止,你跟着一步一步的來製做Hello World app.像你經過閱讀這一章,你可能會在腦海裏有一些疑問:編輯器

  • storyboard裏的ViewController是這怎麼和ViewController類裏面的ViewController.swift文件聯繫上的呢?ide

  • showMessage()方法裏面的代碼塊的意思是什麼?它是怎樣告訴iOS來顯示一個Hello World信息的?學習

  • @IBAcation 關鍵字的意思是什麼?ui

  • "Hello World"按鈕背後是什麼?按鈕是怎樣察覺輕觸而後觸發showMessage()方法的?spa

  • 運行按鈕在Xcode是怎樣工做的?你說的"編譯一個app"是什麼意思?翻譯

以前我想讓你專一於探索Xcode環境因此我沒有解釋任何以上的問題.然而,對每一個開發者來講,理解代碼背後的細節和領會iOS編程的基本概念是相當重要的.技術概念可能會有點難理解,特別是,若是你以前沒有任何編程經驗.不要擔憂這剛剛開始.在以後的章節,隨着你繼續學習和寫更多的代碼,你將對iOS編程有一個更好的理解.盡你最大的努力去學習,越多越好.

咱們來看一個真實生活的案例

想象一個電視遙控器.它能夠在遠距離很方便的無線遙控電視的音量.切換電視頻道,你僅僅須要按頻道數字.增長電視音量,你只要按音量+按鈕.

我來告訴你.你知道當你按下音量按鈕或者頻道按鈕發生了什麼嗎?可能不知道.我相信咱們大多數人不知道遙控器是怎樣無線遙控電視機的.你可能會想到遙控器發送一個肯定的信息給電視機而後觸發音量增長或者切換頻道.

在這裏例子裏,跟你互動的按鈕一般被描述成接口,隱藏在按鈕以後的內部細節歸類爲實施.接口經過一條信息與實施聯繫起來.

這個概念一樣能在iOS編程世界裏實現.storyboard裏的界面是接口,代碼則是安裝啓用.用戶界面元素(如按鈕)經過信息來與代碼溝通.

具體的說,若是你回到Hello World項目,你在視圖裏添加的按鈕就是界面.Viewcontroller類裏面的showMessage()方法則是實施(implementation).當有人按下按鈕,它發送一個showMessage的信息給ViewController來喚醒showMessage的方法.

咱們剛纔演示的是一個面向對象工程(OOP)中很是重要的概念,叫作封裝.showMessage方法的實施隱藏在外部世界(如界面).Hello World按鈕不知道showMessage()方法怎樣工做.它所知道的是它須要發送信息.showMessage()方法經過在屏幕上演示一條"Hello World"信息處理其它的.

Quick note:和OC同樣,Swift是一個面向對象工程(OOP)語言.大多數app中的代碼用一樣的方法處理一類對象.在這裏我教你OOP概念不是想要把你嚇跑.繼續閱讀.你會學習更多關於OOP的內容.

觸摸的背後

如今你應該理解UI裏的按鈕是怎樣和代碼聯繫的,咱們來看看當一個用戶按下"Hello World"按鈕實際上發生了什麼?"Hello World"按鈕是怎樣調用執行showMessage方法的?

你記得你是怎麼在界面編輯器中創建Hello World按鈕和showMessage方法之間的聯繫的嗎?再次打開Main.storyboard,選擇"Hello World"按鈕.點擊多功能區的Connection inspector標誌.在發送事件的部分,你應該能夠找到一條可用的事件及其對應的方法調用.像你在下圖看見的同樣,Touch Up Inside事件聯繫着showMessage()方法.

在iOS,apps是基於事件驅動的編程.不論是系統對象仍是UI對象,都遵從於特定的事件來肯定app的流程.一個UI對象(如按鈕),它可能遵從於一個特定的觸摸事件.當觸發事件時,這個對象喚醒預設的方法來和事件合做.

在Hello World app裏,當用戶擡起手指放在按鈕上的時候,"Touch Up Inside"事件被觸發.所以,它喚醒showMessage()方法來演示"Hello World"信息.因爲咱們想要避免意外或者錯誤的觸摸,因此用"Touch Up Inside"事件代替"Touch Down".

showMessage方法裏面

你如今應該對iOS編程有了更好的理解.可是showMessage方法裏的代碼塊是什麼呢?

先說重要的,方法是什麼?像以前提到的,一個app裏的大部分代碼用一些方法處理一些類型的對象.每個對象提供肯定的功能和執行特定的任務(如在屏幕上演示一條信息).這些功能當用代碼表達時,咱們稱之爲方法.如今,讓咱們近距離的觀看showMessage()方法.

Quick note:我知道理解這些代碼對你來講有點難.若是你是編程純小白,可能須要一段時間來理解OOP.別放棄,由於若是咱們繼續,你將對對象,類和方法得到一個更好的理解.你也能夠看看附件來學習更多的Swift知識.或者參照Playgrounds章節裏的小練習.

在Swift裏,爲了在一個類裏聲明一個方法,咱們用func關鍵字.func關鍵字和方法是一個意思.這個名字能夠識別方法同時讓方法更容易被你代碼裏其餘地方的喚醒.方法能夠輸入參數.參數用圓括號界定.在咱們的例子裏,方法不須要任何參數.在這種狀況下,咱們之間簡單的寫下一對空括號.在方法聲明裏有一個關鍵字咱們還沒探討過叫作@IBAction.這個關鍵字容許你在界面編輯器中聯繫你的源代碼到用戶界面對象.當它插入方法聲明中的時候,意味着這個方法能夠暴露給用戶編輯器.這就是爲何當你鏈接Hello World按鈕和代碼時會有個showMessage事件出如今pop-over裏,若是你不知道我在說什麼你能夠再看一次下面的圖

OK,方法的聲明說的夠多了.咱們來講說花括號裏封閉的代碼塊.

代碼塊是實際執行任務的方法.可是,在iOS裏開發app的時候,咱們不須要老是從頭編寫全部的功能.例如,你不須要學習如何在屏幕上畫出警告框.你能夠利用iOS SDK框架提供的類來擔當重任.iOS SDK 帶來的各類frameworks和kist會讓你更輕鬆.例如,UIKit框架提供類來構建和管理你app的用戶界面.

這裏咱們依靠UIAlertController來建立Hello World消息.一個UIAlertController對象顯示一個警告信息給用戶.第一行代碼建立一個UIAlertController對象.從一個類構建一個對象的語法和調用一個方法很像.你指定類名,緊隨其後的是一組屬性的初始值.這裏咱們指定標題,消息和警報的風格:

let alertController = UIAlertController(title: "Hello World", message: "Hello World", prefeStyle: UIAlertControllerStyle.Alert)

建立UIAlertController類(如alertController)以後,咱們調用addAction方法來增長一個動做給警報,它會顯示"OK"按鈕.在Swift工程裏,你能夠用.來呼出一個方法.

alertController.addAction(UIAlertAction(title: "ok", style: UIAlertActionStyle.Default, handler: nil))

你可能想知道你怎麼才能找到用法和一個類可用的方法.在Xcode裏,你能夠按住option鍵,點擊類的名字(如UIAlertController).pop-over會出現來顯示類的描述.你能夠更多的信息經過檢查類的參考文獻.

UIAlertController對象配置好之後,最後一條代碼是在屏幕上顯示的警告信息.

self.presentViewController(alertController, animated: true, completion: nil)

在Swift,你能夠用self屬性來引用當前實例(或對象).

在大多數的狀況下,self關鍵詞是可選的.你能夠簡單的寫下面的代碼:

presentViewController(alertController, animated: true, completion: nil)

界面和代碼的關係

Xcode是怎樣知道界面編輯器裏的ViewController與ViewController.swift裏定義的ViewController類聯繫起來的呢?

整個事情看起來不重要可是事實上並非如此.你還記得咱們建立Xcode樣板工程時選擇的模板嗎?咱們選的是"Single View Application"模板.當用這個工程模板時,它會在界面編輯器裏自動建立一個默認的view controller而後生成ViewController.swift.綜上所述,view controller是自動和定義在swift文件裏的ViewController類相連的.

咱們來到storyboard,選擇View Controller.在多功能區域裏,選擇Identity inspector圖標,你會發現ViewController被設置成標準類.這就是界面編輯器裏的對象是怎樣與Swift代碼類關聯的.

屏幕背後的運行按鈕

我想跟大家討論的最後一件事是運行按鈕.當你點擊運行按鈕時,Xcode自動登陸模擬器而後運行你的app.屏幕後面發生了什麼?做爲一個開發者,你應該看看全部的部分.

整個進程能夠被分解成三段:編譯,打包和運行.

  • 編譯 --你極可能認爲iOS理解Swift代碼.事實上,iOS僅僅只能閱讀機器碼.Swift代碼是爲開發者讀寫準備的.爲了讓iOS理解app的源代碼,它不得不進行一個翻譯進程來把Swift代碼翻譯成機器代碼.這個過程被稱爲"編譯".Xcode已經附帶了一個內置編譯器來編譯源代碼

  • 打包 --除了源代碼,一個app一般包含源文件好比圖像,文本文件,聲音文件等等.全部這些資源都被打包在一塊兒來生成最終的app.咱們把這兩個過程叫作"構建"過程.

  • 運行 --實際上的登陸模擬器和讀取你的app.

摘要

你如今應該對Hello World app工做有一個基本的認識.做爲一個沒有任何編程經驗的初學者,要弄清楚咱們以前討論的全部編程概念並不容易.不要擔憂.當你寫下更多代碼而後在下一章開發一個真正的app滯後,你會對Swift和iOS編程有一個更清晰的認識.

相關文章
相關標籤/搜索