網頁

顯示具有 Objective-C 標籤的文章。 顯示所有文章
顯示具有 Objective-C 標籤的文章。 顯示所有文章

2011年4月15日 星期五

ObjC interface的Hello World

物件導向語言最重要的就是class,ObjC叫interface,Hello World進階版,一樣還是Hello World!
一切就看圖說故事...






閱讀全文...

2011年4月13日 星期三

使用GNUmakefile


好的工具讓你上天堂,爛的工具讓你下地獄,講都沒在聽…(爛梗)

Makefile其實在unix like的環境中,一直扮演很重要的角色,熟悉makefile可以讓你在編譯時達到事半功倍的效益。



一樣以之前的hello.m為例,在相同的目錄下,加入一個名為GNUmakefile的檔案,檔案內容如下:

include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = hello
hello_OBJC_FILES = hello.m

include $(GNUSTEP_MAKEFILES)/tool.make

檔案存檔後,在命令列輸入make執行編譯動作,會在同一目錄下產生一子目錄(./obj)及產生執行檔。

在命令列輸入 ./obj/hello,會得到相同的Hello World!結果。

有關GNUmakefile詳細使用方式,可以參考 Writing GNUstep Makefiles 及 GNUstep Makefile Package。

閱讀全文...

ObjC的特色


ObjC就是C加上物件導向的特性,很接近Java,比C++精簡,許多概念都是從SmallTalk而來的。

  • 單一繼承,只可以有一個superclass。 
  • C++和JAVA使用 funcation call[Object.funcation(args)],ObjC也是,只是改稱為message,格式改為[Object method:args],使用dynamic binding,並不是在編譯的時候處理。 
  • Category類似Java和C++中的Subclass用來增加原有的Class短缺的method,差別在於Category只能新增method,不能新增變數,而C++和java的subclass可以。 
  • Protocol類似Java的Interface,用來解決沒有多重繼承的問題。

閱讀全文...

GNUstep初探


GNUstep主要提供兩個函示庫,Foundation和AppKit。Foundation用來處理非圖形介面,又稱為GNUstep Base;AppKit用來處理圖形介面,又稱為GNUstep GUI。最後衍生出OpenStep介面,可用在Mach、Windows、Solaris及HP/UX,更進一步成為MacOSX的Cocoa環境。


GNUstep 包含四個主要部份:
1. GNUstep Make:提供類似 Makefile 的功能。
2. GNUstep Base:提供 OpenStep 的 Foundation 程式庫,用於處理非圖形介面的功能。
3. GNUstep GUI:提供 OpenStep 的 AppKit 程式庫,用於處理圖形介面的功能。
4. GNUstep Back:提供與作業系統相關的後端處理,提供 GNUstep GUI 有關繪圖及字型的功能。讓使用者不用考慮作業系統問題。

閱讀全文...

2011年4月12日 星期二

在Windows環境下編譯ObjC


雖然安裝完環境後,也嘗試編譯OK,但想到每次都要打那落落長的一串,心裡就…

懶是進步的原動力,翻完了GCC Online Documents(http://gcc.gnu.org/onlinedocs/)發現,GCC預設的環境變數有OBJC_INCLUDE_PATH,有這個真的方便多了,在unix like環境有.profile可以發揮其妙用了。


1.        UNIX like環境(這邊是Windows底下採用MSYS環境)
1.1.       從 “開始/所有程式/GNUstep/shell” 開啟 MSYS
1.2.       在 home 目錄下,打開 .profile 檔案,此檔案的內容會在每次新進入的shell時執行一次,在檔案裡面鍵入下列兩行:
export OBJC_INCLUDE_PATH=/c/GNUstep/GNUstep/System/Library/Headers/
export LIBRARY_PATH=/c/GNUstep/GNUstep/Library/Libraries/


說明:兩行用來設定ObjC的 header file和library 路徑,GCC會造此設定去尋找所需的檔案。
1.3.       重新開啟MSYS或在原MSYS的命令列鍵入執行
. ~/.profile
編譯看看
$ gcc `gnustep-config –objc-flags` hello.m -o hello -lgnustep-base –lobjc


閱讀全文...

2011年4月11日 星期一

Objective-C環境(使用GNUStep)安裝於Windows


為了建置一個練習Objective-C語言的環境,GNUstep是一個不錯的選擇,一個實作出Cocoa APIs的跨平台開發環境,可以在Linux和Windows平台下使用。底下以Windows(我的電腦為Windows 7)為例。


1.        先至GNUstep的下載頁面(http://www.gnustep.org/experience/Windows.html)下載GNUstep MSYS System、GNUstep Core和GNUstep Devel(不裝這個就無法編譯程式),這邊下載的是0.25.x版本,安裝到Windows上,這樣就會有MinGW這個開發環境和相關程式。
2.        安裝GNUstep MSYS System,標準的windows安裝步驟,同意license,採用預設值,一直按Next就可以安裝完成。








3.        安裝GNUstep Core,標準的windows安裝步驟,同意license,採用預設值,一直按Next就可以安裝完成。







4.        安裝GNUstep Devel,標準的windows安裝步驟,同意license,採用預設值,一直按Next就可以安裝完成。








5.        執行GNUstep的shell視窗
執行 “開始/所有程式/GNUstep/shell” 會出現下面畫面,安裝時都採預設值時,起始目錄對應的實體硬碟目錄為C:\GNUstep\home\<使用者名稱>

6.        又見Hello World
預設環境中會有Vim,打開產生hello.m,鍵入下列程式碼。
#import

int main(int argc, char *argv[]){
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSLog(@"Hello World!");

    [pool drain];
    return 0;
}

7.        編譯及執行
在shell視窗鍵入:
gcc `gnustep-config --objc-flags` -L /GNUstep/System/Library/Libraries hello.m -o hello -lgnustep-base –lobjc

./hello 執行



閱讀全文...