Objective C類,物件,方法

2021-07-07 10:29:37 字數 3565 閱讀 6932

objective-c採用特定的語法對類和例項應用方法:

[ classorinstance method];

左方括號後要緊跟類的名稱或者該類的例項名稱,它後面可以是乙個或多個空格,空格後面是將要執行的方法。最後,使用右方括號和分號來終止。請求乙個實力或類執行某個操作時就是在向它發生一條訊息。

#import 

這是乙個系統檔案,#import

表示將該檔案的資訊匯入或包含到程式中,就像在這裡輸入該檔案的內容。要匯入檔案

foundation.h

因為它包含其他類和函式的有關資訊,在程式後面的部分中會用到。

int main(int argc,const char * argv)

制定程式的名稱為main,

是乙個特殊的名稱,用於準確滴表示程式將在何處開始執行。

main

之前的保留字

int指定

main

返回的值型別,該值為整形。

@autoreleasepool

{}之間的程式語句會在被稱為自動地釋放池的語境中執行。自動釋放池的機制是:它使得應用在建立新物件時,系統能夠有效地管理應用所使用的記憶體。

nslog()

函式的引數是

@」programming is fun」此處的@

位於一對雙引號的字串前面,這稱為常量

nsstring

物件。

nslog是乙個

objective-c

庫中的函式,他僅僅顯示或記錄其引數,但是之前它會顯示該函式的執行日期和時間程式名。

return 0表示要終止

main

的執行併發送回乙個狀態值0

@inte***ce部分:

定義新類時,首先需要告訴objective-c

編譯器該類來自何處。即必須為它的父類命名。其次,還必須定義在處理該類的物件時將要用到的各種操作或方法的型別。

選擇名稱:

objective-c中變數可以用於儲存浮點數,字元,甚至物件(物件的引用)。制定名稱的規則相當簡單:名稱必須以字母或下劃線開頭,之後可以是任何字幕,下劃線或者

0-9之間的數字組合。

nsarray *colorarray=@[@」red」,@」blue」,@」green」];

類方法和例項方法:

必須定義各種方法才能使用fraction

print方法的宣告,應該位於介面檔案中:

-(void) print;

開頭「-

」通知objective-c

編譯器,該方法是乙個例項方法。此外正好「

+」表示類方法。類方法是對類本身執行某些操作的方法。如建立類的新例項。

實力方法能夠對類的例項執行一些操作,如設定值,檢索值,和顯示值。

1.返回值:

宣告新方法時,必須告訴objective-c

編譯器該方法是否又返回值,如有是哪種型別。做到這一點,需要將返回型別放入開頭的負號或正號之後的圓括號。因此,宣告:

-(int) currentage;

指定名為currentage

的例項方法將返回乙個整形值

類似地語句:

-(double) retrievedoublevalue;

宣告了乙個返回雙精度值的方法。

如果方法不返回值,可用void

型別指明,語句如下:

-(void) print;

這條語句宣告了乙個名為print

的方法,它不返回任何值。

2.方法的引數:

-(void) setnumerator:(int)n;

-(void) setdenominator:(int) d;

他們都是不返回值的例項方法。每個方法都有乙個整形引數,這是通過引數名前面的int

指明的。

-             (void)       setnumerator    :                (int)         n;

方法型別    返回型別    方法名稱        方法有引數      引數型別    引數名稱

@implementation部分:

與注釋一樣,@implementation

部分包含宣告在

@inte***ce

部分的方法的實際**,且需要制定儲存在類物件中的資料型別。在

@inte***ce

部分宣告方法,並在

@implementation

部分定義它們,

@implementation

部分的一般格式如下:

@implementation newclassname

memberdeclarations;

methoddefinitions;

@end;

newclassname表示的名稱與

@inte***ce

部分名稱相同。可以再父的名稱之後使用冒號:

如同在@inte***ce

部分使用冒號一樣:

2implementation fraction:nsobject

memberdeclarations部分指定了哪種型別的資料將要儲存到

fraction

中以及這些資料型別的名稱。

@implementation部分中的

methoddefinitions

部分包含在

@inte***ce

部分指定的每個方法的**中。與

@inte***ce

類似每種方法的定義通過方法的型別,它的返回值和引數進行標識,我們並沒有使用分號來結束該行,而是將之後的方法**放入一對花括號中。使用

@synthesize指令能夠讓編譯器自動為你生成一些方法

。myfraction =[fraction alloc];

alloc是

allocate

的縮寫。因為要為新分數分配記憶體儲存空間,表示式為:

[fraction alloc]

想新建立的fraction

類傳送一條訊息。該

alloc

方法繼承自父類。如果向某個類傳送

alloc

訊息,便獲得該類的新例項。

alloc

方法保證物件的所有例項變數都變成初始狀態。在建立物件之後還必須對它進行初始化:

myfraction=[fraction init];

init方法用於初始化類的例項變數。將

init

訊息傳送給

myfraction.init

方法也可以返回乙個值,即被初始化的物件。將返回值儲存到

fraction

的變數myfraction中。

fraction*myfraction;

myfraction前的星號*表明

myfraction

是fraction

物件的引用或指標。變數

myfraction

實際上並不儲存

fraction

資料而是儲存了乙個引用,表明物件資料在記憶體中的位置。在宣告

myfraction

時它的值是未定義的,它沒有被設定為任何值,並且沒有預設值。

Objective C物件模型 類物件和元類物件

參考 objective c物件之類物件和元類物件 一 objective c物件模型及應用 參看以上文章基本可以了解objective c物件模型模型了,可做學習 1.動態替換類方法或例項方法 method swizzling api 2.編寫category類別 3.動態增加屬性 objc se...

1 類與物件之objective c

1.objc跟 c的區別與聯絡 首先objc是乙個物件導向的語言 封裝 繼承 多型 objc相當於c的乙個超集即objc允許使用任何c語言 但增加了許多c沒有的特點bigger easier 2.objc中的類與物件 類由介面 xx.h inte ce 和實現 xx.m implementation...

1 類與物件之objective c

1.objc跟c的區別與聯絡 首先objc是乙個物件導向的語言 封裝 繼承 多型 objc相當於c的乙個超集即objc允許使用任何c語言 但增加了許多c沒有的特點bigger easier 2.objc中的類與物件 類由介面 xx.h inte ce 和實現 xx.m implementation ...