如今iphone開發越來越火,俺也湊湊熱鬧學習一下objective-c,但是公司全是清一色的windows xp系統(不要聲張公司機器)(^_^),沒法學習和調試。學習程式設計語言最忌諱的就是只看書不動手,所以必須找一個類比環境寫幾個程式試試。網上聽說有GNUstep的類比unix環境,於是就上網下載了一個。
在:http://www.gnustep.org/experience/Windows.html
一共需要四個安裝包: GNUstep System
,GNUstep Core
,GNUstep Devel
,Cairo Backend
順序安裝就OK了。
windows上可以沒有像Mac OS X上Xcode那樣的objective-c的開發環境,所以需要找一個簡易順手的編輯環境。
一般常見的有UltraEdit,Notepad++和Emeditor,個人習慣原因一直使用Emeditor。
編寫一個例子程式測試一下環境是否正確。最近正在讀《Objective-C Beginner's Guide.pdf》,所以就把有關NSDictionary類的例子打了一遍。
首先進入GNUstep安裝目錄下的使用者目錄。假如說當前系統的使用者名稱是chen,在C盤下安裝的GNUStep,那麼目前使用者的home目錄應該是
C:/GNUstep/home/chen。
再開啟開始菜單啟動剛才安裝的GNUStep的shell的控制台程式。
用unix命令mkdir Dictionary建立一個例子程式的目錄Dictionary,並且cd Dictionary進入該目錄。
在該目錄下建立兩個檔案,一個是原始碼檔案Dictionary.m還有一個編譯設定檔GNUmakefile。
測試代碼Dictionary.m內容如下
#import <Foundation/NSString.h><br />#import <Foundation/NSAutoreleasePool.h><br />#import <Foundation/NSDictionary.h><br />#import <Foundation/NSEnumerator.h><br />#import <Foundation/Foundation.h><br />#import <stdio.h><br />void print(NSDictionary *map) {<br />NSEnumerator *enumerator = [map keyEnumerator];<br />id key;</p><p>while(key = [enumerator nextObject]) {<br />printf("%s => %s /n",<br />[[key description] cString],<br />[[[map objectForKey: key] description] cString]);<br />}<br />}<br />int main(int argc, const char *argv[]) {<br />NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];<br />NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys :<br />@"one", [NSNumber numberWithInt: 1],<br />@"two", [NSNumber numberWithInt: 2],<br />@"three", [NSNumber numberWithInt: 3], nil];<br />NSMutableDictionary *mutable = [[NSMutableDictionary alloc] init];</p><p>//print dictionary<br />printf("----static dictionary/n");<br />print(dictionary);</p><p>//add objects<br />[mutable setObject: @"Tom" forKey: @"tom@jones.com"];<br />[mutable setObject: @"Bob" forKey: @"bob@dole.com"];</p><p>//print mutable dictionary<br />printf("----mutable dictionary/n");<br />print(mutable);</p><p>//free memory<br />[dictionary release];<br />[mutable release];<br />[pool release];</p><p>return 0;<br />}
編譯設定檔GNUmakefile內容如下
include $(GNUSTEP_MAKEFILES)/common.make<br />TOOL_NAME=Dictionary<br />Dictionary_OBJC_FILES=Dictionary.m<br />include $(GNUSTEP_MAKEFILES)/tool.make
編輯儲存檔案後,回到shell環境下,輸入make命令編譯原始碼,編譯器會自動尋找目前的目錄下的GNUmakefile設定檔。
如果編譯成功,會自動產生一個obj目錄,該目錄內有編譯連結後的目標檔案。
使用命令./obj/Dictionary.exe啟動剛才產生的Dictionary.exe檔案,觀察運行結果。
整個搭建編碼編譯的過程就是這樣,需要補充的是GNUmakefile編譯檔案的寫法。
例子中的四行配置語句的順序不能亂,但是中間可以有空行,
TOOL_NAME=Dictionary
Dictionary
_OBJC_FILES=Dictionary.m
紅字表示最終產生的目標名,也就是可執行檔的名稱可以與原始碼檔案名稱不同。
原始碼部分就不解釋了,純屬打字而已,把整份文檔看下來也就明白了,34頁的文檔看起來也是很輕鬆的。