iOS程式設計 – 環境認識

歡迎大家踏上APP開發之路!當你選擇要開始開發原生*iPhone/iPad應用程式之後的第一課,就是學習Objective-C程式語言。

原生:Native,在這裡指的是實際安裝到手機的應用程式,而iPhone/iPad應用程式的官方開發方式,是使用Xcode撰寫Objective-C程式語言。

學習程式語言最好的方式,便是實作!透過一個一個的範例練習,並且設定自己想要製作的專題,慢慢地從範例中,找到自己要完成的專題的元件,進而組合、修改,達成目標!

不過目前我們離這個目標還很遙遠,先從所有程式語言的第一個範例,Hello World開始吧!

打開你的Xcode,建立一個新的專案

螢幕快照 2013-01-19 上午11.20.09

選擇OS X,Application,Command Line Tool,按下Next

螢幕快照 2013-01-19 上午11.22.10

專案名稱取名為HelloXCode,type設定為foundation,組織名稱與公司識別字則可依個人喜好輸入,按下Next

螢幕快照 2013-01-19 上午11.26.06

選擇一個想要存放專案的地方,然後按下Create,此時專案就生成摟!接著請點選左邊檔案清單中的main.m

螢幕快照 2013-01-19 上午11.28.10

此時右方的視窗便會呈現main.m的內容,如下面所示:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        // insert code here...
        NSLog(@"Hello, World!");

    }
    return 0;
}

在不修改任何程式碼的狀況下,按下左上角的Run

螢幕快照 2013-01-19 下午1.25.49
右下方的Output區就出現了:

螢幕快照 2013-01-19 下午1.27.44

Wow,恭喜各位,正式進入了Objective-C的世界!雖然還沒有看到iPhone模擬器,但是我們離目標又更近了一些!

讓我們再回頭看看剛剛的程式碼:

整個main function是程式的進入點,有兩個輸入的變數,一個輸出的變數。@autoreleasepool使用自動記憶體機制來進行記憶體的釋放,而我們之所以能夠看到Hello, World!的輸出,關鍵在於NSLog這一行。我們透過NSLog這個函數來將後面所寫的字串輸出。

初學者建議先把重點放在NSLog這一行,那究竟什麼是NSLog呢?當我們對內建的這些函數不了解時,最簡單的方式,就是按下option鍵,然後將滑鼠移至該關鍵字上,此時就會出現一個問號,再按下滑鼠左鍵,可以看見它的定義。

螢幕快照 2013-01-19 下午1.42.12

哦~在描述中它有提到,Log在這邊是當作動詞使用,代表將….記入….,所以他的意思就是,你可以用NSLog來把一段錯誤訊息記入Apple系統的記錄設施,指的就是顯示在右下方的輸出區啦!

NSLog是從一開始到你很深入開發iPhone APP程式,都一路會一直使用到的功能!透過它,你可以窺探程式執行的流程正不正常、變數內容正不正常等等,很多的問題都可以透過它來找到,所以是屬於一定要會的一個函數!

咦,那Hello, World前面為什麼會有一個@呢?

在Objective-C中,使用NSString這一種字串物件型式,而這種字串物件型式的其中一個特點,就是用@開頭!

我們剛剛只是單純輸出Hello, World,那如果輸出數字怎麼做呢?

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        // insert code here...
        NSLog(@"Hello, World!%d",100);

    }
    return 0;
}

哦~~除了單純的字串之外,當我們要輸出其他變數內容的時候,可以透過這樣的撰寫方式,先用%d擺放在顯示的位置,再將實際的數字或是整數變數的名稱放在逗號之後!

咦,那都是用%d嗎?

當然不是!%之後要接什麼英文字母,關鍵在於你想要顯示什麼樣的變數的內容,有哪些選擇呢?此時我們可以參考Apple的「String Format Specifiers

咦,那可以輸出數字,是否代表也可以在這邊進行運算呢?

沒錯!如同下面的例子:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        // insert code here...
        NSLog(@"Hello, World!%d",100+200);

    }
    return 0;
}

你將會得到:

螢幕快照 2013-01-19 下午1.57.54

所以!目前為止,我們用Xcode跑了Hello World,還輸出了數字,並且還知道可以輸出很多不同的東西,或甚至是運算!

接下來要請各位自己來作個小實驗吧!

[自我練習]

請在NSLog之前,建立兩個變數,第一個變數為NSString物件,裡面儲存你的名字,第二個變數為整數變數int,裡面儲存你的年齡。

NSLog則預期輸出:Hello! My name is XXX, I am YY years old.

請動手做吧!

有任何問題,歡迎加入本課程的FB討論社團,你也可以在那邊找到練習題的答案!