編譯運行Objective-C程序有兩種主要方式:
1、Xcode集成開發環境。
2、使用GNU Objective-C編譯器的Terminal命令行窗口。
使用Xcode
XCODE和iOS SDK下載地址:
[developer.apple.com](http://blog.csdn.net/haomengzhu/article/details/developer.apple.com)
當然也可以從App Store里面下載。
當然,你需要創建一個開發者賬號,不過暫時是不需要的。
Objective-C源文件使用.m結尾,.m也就是擴展名。
Objective-C++是C++的擴展,類似于Objective-C是C的擴展。
A、使用Xcode創建新程序的操作步驟:
1、啟動Xcode應用程序。
2、如果開發新項目,選擇File->New->New Project...,或者在起始頁選擇Create a New Xcode Project。
3、選擇應用程序類型,選擇Application->Command Line Tool(剛開始學習,就不搞什么圖形界面了先。這個和C語言差不多),然后Next。
4、為應用程序取一個名稱,并且將Type設置為Foundation,確定Use Automatic Reference Counting復選框已經選中(這個是為了使用新的特性,即ARC),單擊Next。
5、選擇項目目錄的名稱,還可以選擇在哪個目錄中存儲項目文件,然后點擊Create。
6、在左上窗格中會看到文件main.m(在與項目名同名的文件夾下可以找到),突出顯示該文件(就是單擊那個文件)。在該窗口下面的編輯窗口中輸入或編輯你的程序。
7、在工具欄中,選擇位于View下方中間的圖標,將顯示調試區域,在這個區域會將顯示輸出結果。l
8、在工具欄中點擊Run按鈕,或者從Product菜單中選擇Run,編譯并運行程序。
如圖示:


B、使用Terminal命令行寫程序的操作步驟:
1、打開Terminal。
2、選擇你的工作(工程)目錄。如果沒有:
~~~
$mkdir test
~~~
進入工作目錄
~~~
$cd test
~~~
新建并編輯,
~~~
$vi main.m
~~~
VI的使用,請參考以下鏈接:
[http://en.wikipedia.org/wiki/Vi](http://en.wikipedia.org/wiki/Vi)
輸入你的第一個Program:
~~~
//?My?first?Program??
#import???
???
int?main(int?argc,?charchar?*argv[]){??
????@autoreleasepool{??
????????NSLog(@"Hello?World!");??
????}??
??return?0;??
}??
~~~
3、編譯,編譯鏈接器使用clang的LLVM Clang Objective-C。這個和Linux下的GCC使用差不多。大家不會的話,可以看看GCC那套編譯。
$clang -fobjc-arc -framework Foundation main.m -o test
4、運行,這個和Linux是一樣的編譯的可執行文件前面加上“./”。也可以把工程目錄加到PATH中(這樣就可以不要"./"),一般沒必要。
$./test
5、輸出結果就會顯示在命令行中。
需要注意的一點是:Objective-C是大小寫敏感的,也就是說區分大小寫,所以寫代碼的時候注意這點。
詳解:
a、注釋:使用//或者/* ... */
b、#import:告訴編譯器找到并處理名為Foundation.h文件,?這是一個系統文件;
`#import表示將該文件的信息導入到程序中;`
在C和C++中采用 #include指令,?在本例中也可以采用#include,?
而#import是#include改進指令,?它可以防止頭文件重復包含問題;
c、int main(int argc, const char * argv[])?,?這個方法是程序的入口?。?
參數argc-參數數目?,?argv-參數值
d、@autoreleasepool自動釋放池:它使得應用在創建新對象時,系統能夠有效地管理應用所使用的內存;
或者使用下面的方式:
~~~
//?First?program?example??
#import???
int?main?(int?argc,?const?charchar?*?argv[])?{??
NSAutoreleasePool?*?pool?=??
[[NSAutoreleasePool?alloc]?init];??
//?insert?code?here...??
NSLog(@"Hello?World!");??
[pool?drain];??
return?0;??
}??
~~~
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]
語句是創建一個自動釋放內存池對象,?使用它來維護內存釋放和回收,?
其中alloc方法是分配內存,?init方法是初始化類,?相當于C++或Java的構造方法作用。
[pool drain]語句是用來釋放內存池,?它將納入到這個內存池中管理的對象內存全部釋放掉,?
關于NSAutoreleasePool問題我們將在內存管理部分詳細討論。
e:NSLog:oc庫函數,僅僅顯示或記錄其參數,還能顯示變量,使用%i;
NSLog是Foundation框架提供的Objective-C日志輸出函數,
與標準C中的printf函數類似,?并可以格式化輸出。?
@“Hello, World!”,?常量NSString對象,是代表NSString字符串對象,?它是Objective-C常用的字符串類。?
f:retrun 0:程序正常退出;
它表示要終止main的執行,?一般情況下0代表正常結束,?非0代表異常情況,?
這是沿用了C語言的習慣。
Objective-C代碼的文件擴展名
