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 ...