Objective-C程式的結構
就像學習所有程式設計語言一樣,第一個程式就是在螢幕列印出“Hello World !”。
我看的書上用到的編譯器還是比較老的,我現在用的是Xcode4.2.1,它有自動記憶體管理,所以書上的一些程式也許會報錯。可以在建立工程時不選擇Use Automatic Reference Counting選項解決這個問題。
運行Xcode,建立一個Command Line Tool工程,取名FirstProgram。
在下一步,我們也取消Use Automatic Reference Counting選項。
不管自動產生的程式碼是什麼樣的,我們將代碼改成以下:
複製代碼 代碼如下:
//First Program Example
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Hello, World!");
[pool drain];
return 0;
}
運行,顯示如下:
以下是對這段代碼的簡單說明:
1、程式第一行是注釋,跟C/C++/Java一樣,Objective-C注釋也可以用 //、/*??*/來實現。
2、#import <Foundation/Foundation.h>
告訴編譯器找到並處理名為Foundation的檔案。
3、int main (int argc, const char * argv[])
指定程式名稱為main,這是一個特殊名稱,表示程式開始的地方。
4、NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
為自動釋放池在記憶體中保留了空間。
5、NSLog(@"Hello, World!");
指定要調用名為NSLog的常式。傳遞給NSLog的參數是字串@"Hello, World!",它是一個NSString對象。
6、[pool drain];
用於釋放已指派的記憶體池,以及與程式相關聯的對象。
類、對象和方法
1、執行個體和方法
(1)使用類建立一個執行個體:
複製代碼 代碼如下:
yourCar = [Car new];
這裡的Car是一個類,yourCar是一個對象
(2)對類和執行個體應用方法:
複製代碼 代碼如下:
[ClassOrInstance methed];
類或執行個體的名稱要緊跟“[”,“];”用於終止。這條語句相當於Java中的:對象名.方法名
再如:
複製代碼 代碼如下:
currentMileage = [yourCar currentOdometer];
其中,currentMileage用於接收傳回值
2、一段詳細代碼及說明:
複製代碼 代碼如下:
複製代碼 代碼如下:
複製代碼 代碼如下:
//program section
int main (int argc, const char * argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Fraction *myFraction;
myFraction = [Fraction alloc];
myFraction = [myFraction init];
[myFraction setNumerator: 1];
[myFraction setDenominator: 3];
NSLog(@"The value of myFraction is: ");
[myFraction print];
[muFraction release];
[pool drain];
return 0;
}
(1)第4行是聲明一個類的方法,@interface 新類名:父類名(2)第8~10行定義了三個方法,其中“-”表示執行個體方法,“+”表示類方法。
執行個體方法總是可以訪問它的執行個體變數,而類方法卻不行,因為類方法只處理類本身,而不處理類的任何執行個體
(3)第31~32行可以合并成
複製代碼 代碼如下:
myFraction = [[Fraction alloc] init];
或者
複製代碼 代碼如下:
myFraction = [Fraction new];
(4)第39行用於為對象myFraction釋放記憶體,值得注意的是,最新的Xcode編譯器可以實現自動釋放記憶體