[Objective-C] 程式設計教學:在 Mac 上使用 Cocoa 建立開發 Objective-C 程式的開發環境

【分享本文】
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

    如果要在 Mac 上學 Objective-C,大部分的程式人都會使用 Xcode,這是正規的方式;不過,如果有跨平台的選擇,GNUstep 是一個替代的方案。本文兩者皆會介紹。

    正規的方法,使用 Xcode

    學 Objective-C 最正統的方法是在 Mac 平台上透過 Xcode 來撰寫 Objective-C 程式,至於本系列文章介紹的其他工具或平台,都算是替代性的方法。Xcode 包括

    • 編譯器 (C、C++、Objective-C、Swift 等)
    • Cocoa 框架 (framework)
    • IDE
    • iOS 模擬器 (simulator)

    如果只要寫 C 或 C++ 程式,命令列工具的部分可獨立安裝,其他的部分則要安裝整個 Xcode。

    接下來,我們展示一下用 Xcode 建立新 Objective-C 專案的流程。一開啟 Xcode 時會進入歡迎畫面:

    啟動 Xcode

    接著選擇專案類型:

    選擇 Xcode 專案模板

    一開始我們的目標是練習語法,還用不到 UI 的部分,選擇 Command Line Tool 即可。

    接著,選擇專案相關的選項:

    設置 Xcode 專案

    一開始預設的語言 (language) 是 Swift,但我們的目標是練習 Objective-C,所以要更改語言。Organization Identifier 的部分一般是用自己所在的開發團隊所擁有的網域的反向來命名,由於我們只是要練語法,用 com.example 也無妨。

    再來要選擇專案所在的位置:

    選擇 Xcode 專案位置

    最後會進入 Xcode 的編輯器畫面:

    Xcode 的編輯器

    這時候就可以開始用 Xcode 來寫程式。

    使用其他的編輯器或 IDE

    即使使用其他的編輯器或 IDE,仍然要安裝 Xcode,因為 Cocoa 和 Xcode 是包在一起的。只是 Xcode 比較肥大,我們有時候會想用其他的工具。AppCode 是 JetBrains 所出品的 Objective-C 和 Swift 商業 IDE,有著不錯的評價,提供 30 天的試用期。EditRocket 則是一個多程式語言商業編輯器,包括 Objective-C 在內,同樣提供 30 天試用期;但 EditRocket 沒那麼知名,有興趣的讀者可自行試用。另外,AtomVSCode 皆對 Objecitve-C 提供語法高亮 (synatx highlighting) 等基本的支援。

    Hello World 程式

    Hello World 程式是用來確認開發環境可正常運作的微型程式,本節建立一個 Objective-C 的版本。開啟編輯器或 IDE,撰寫以下的程式:

    #import <Foundation/Foundation.h>
    
    int main(int argc, const char *argv[])
    {
        @autoreleasepool {
            NSLog(@"Hello World");
        }
    
        return 0;
    }
    

    如果讀者有按照我們先前建立專案的流程的話,可以利用 IDE 的「Build」或「Run」按鈕就可以編譯程式。

    如果使用編輯器的讀者,可在終端機輸入以下指令:

    $ clang -framework Foundation -o hello hello.m
    

    -framework 參數會同時呼叫相對應的頭文字檔和二進位檔,這是 Mac 上的 Clang 特有的參數。

    如何在 MacOS 上使用 GNUstep

    目前 MacOS 無法編譯及安裝 GNUstep 函式庫,主要的原因是 ABI 不相容,至少筆者試了幾個不同的編譯器 (GCC 和 Clang) 和編譯參數皆如此。不過,還是可以搭配 GNUstep Make 的部分來編譯 GNUstep 專案。筆者其實不是很鼓勵這樣做,因為 Cocoa 和 GNUstep 雖然語言 (Objective-C) 相同,API 部分相容,但 ABI 其實不相容,變成要處理不完全相容的編譯環境所帶來的問題。如果仍然想用 GNUstep 的話,Homebrew 有 gnustep-make 的套件,使用以下指令安裝:

    $ brew install gnustep-make
    

    GNUstep Make 是一個以 Makefile 為基礎的小型框架,用來簡化編譯 Objective-C 程式的工作。我們在後文會介紹如何以 GNUstep Make 建立 Objecitve-C 專案。由於 GNU Make 是跨平台的,GNUstep 專案可在不同平台間流通,但由於不同 Objective-C 編譯器間 ABI 不完全相容,無法單憑 GNUstep 專案通吃所有的平台。我們會集中在後文介紹 GNUstep Make 的用法。

    【分享本文】
    Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email
    【追蹤新文章】
    Facebook Twitter Plurk
    標籤: OBJECTIVE-C