公告版位

新版部落格:blog.changyy.org

差不多該學學 Objective-C 了,手邊也有 iphone 及相關的環境可開發,剩下只有懶散的心情要整頓。至於什麼是 Objective-C ,可以先看看維基百科的介紹,我覺得還滿詳盡的,甚至英文版還有介紹從 C/C++ 跨到 Objective-C 的範例程式,真的就乾心哩,看程式比看英文快上十倍啊。

跟 iphone 開發相關的網頁介紹:

其他相關的教學

接著,就只剩環境架設的部分,

在 Ubuntu 9.10 最簡化版:

  1. 安裝相關套件
    • # sudo apt-get install gnustep-devel
    • The following extra packages will be installed:
        gnustep-back-common gnustep-back0.16 gnustep-back0.16-art gnustep-base-doc gnustep-core-devel gnustep-core-doc gnustep-gpbs gnustep-gui-common
        gnustep-gui-doc gnustep-gui-runtime gnustep-make-doc gorm.app libaspell-dev libaudiofile-dev libgif-dev libgnustep-gui-dev libgnustep-gui0.16
        libjpeg62-dev libpng12-dev librenaissance0 librenaissance0-dev libtiff4-dev libtiffxx0c2 projectcenter.app projectmanager.app zlib1g-dev
  2. 安裝完就能用 gcc 進行編譯囉
    • # gcc -lgnustep-base -lpthread -lobjc -lm -I/usr/local/include/GNUstep -I/usr/include/GNUstep source.m -o source_run
  3. 參考資料

使用 Makefile 的教學:

  1. 建立 GNUmakefile
    • GNUSTEP_MAKEFILES = /usr/share/GNUstep/Makefiles/

      include $(GNUSTEP_MAKEFILES)/common.make
      TOOL_NAME = LogTest
      LogTest_OBJC_FILES = source.m
      include $(GNUSTEP_MAKEFILES)/tool.make
    • 最上頭那段是我自己加的,網路上大部分的文件都是使用 shell 來設置環境變數
      • C shell
        • # source <GNUstep root>/System/Library/Makefiles/GNUstep.csh
      • Bourne shell
        • # . <GNUstep root>/System/Library/Makefiles/GNUstep.sh
  2. 建立 source.m
    • #include <stdio.h>

      /*
      * The next #include line is generally present in all Objective-C
      * source files that use GNUstep.  The Foundation.h header file
      * includes all the other standard header files you need.
      */
      #include <Foundation/Foundation.h>  

      /*
      * Declare the Test class that implements the class method (classStringValue).
      */
      @interface Test
      + (const char *) classStringValue;
      @end

      /*
      * Define the Test class and the class method (classStringValue).
      */
      @implementation Test
      + (const char *) classStringValue;
      {
        return "This is the string value of the Test class";
      }
      @end

      /*
      * The main() function: pass a message to the Test class
      * and print the returned string.
      */
      int main(void)
      {
        printf("%s\n", [Test classStringValue]);
        return 0;
      }
  3. 編譯與測試
    • # mkdir test ; cd test ;
    • # vim GNUmakefile (內容如上)
    • # vim source.m (內容如上)
    • # make ;
    • # ./obj/LogTest
      • 輸出結果:This is the string value of the Test class
  4. 參考資料

 

Learn Objective-C on Ubuntu


changyy 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • foxhound.ho
  • 不錯的開始,但是Gunstep 似乎...

    謝謝你的教學,在這篇文章以及蔡明志翻譯的新書下
    在下也開始"玩" Objective-C 了
    不過很快的就發現gunstep 編譯的限制
    目前我發現的差異有
    不支援 物業管理 , @synthesize 這些設定屬性方式
    也似乎不支援 物件.屬性 = XX,非得要用 [物件 屬性] = XX 才行
    不知道你有沒有遇到類似的問題,挺煩人的
  • 哦哦,後來工作上公司有配 Mac Mini 了 XD 從此我就都用 Mac 跟 Xcode 來開發了 orz
    暫時沒有其他經驗可以分享

    不過 物業管理 , @synthesize 只是自動幫你把一些冗長重複性的 func 幫你寫好而已,因此,你只要手動去把他們打出來,或許就可以使用"物件.屬性" 的存取方式囉!你可以再留意看看。此部份算是我猜想而已 XD,但感覺像 C++ 可以自行去定義 operator(運算子) 的感覺,如物件相加、相乘等等。

    changyy 於 2010/04/08 09:23 回覆

【 X 關閉 】

【PIXNET 痞客邦】國外旅遊調查
您是我們挑選到的讀者!

填完問卷將有機會獲得心動好禮哦(注意:關閉此視窗將不再出現)

立即填寫取消