黑馬程序員——Objective-C程序設計(第4版)學習筆記之07-類——黑馬 IOS 技術博客

------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! -------

要注意的一件事情(這個和C語言差不多,就是頭文件引用規則):

導入的文件要用一對引號引起來,而不是<Foundation/Foundation.h>中的“<”和">"字符。雙引號適用於本地文件(你自己創建的文件),而不是系統文件,這樣就通知編譯器在哪裏能夠找到指定的文件。


接口和實現的要求:

接口文件包含類的公開信息,即能夠與這個類的使用者共享一些信息。另一方面,實現部分包含的是私有信息,即實例變量和代碼。


合成存取方法:

從Objective-C2.0開始,可自動生成設值方法和取值方法(統稱爲存取方法)。具體步驟如下:

1)在接口部分中使用@property指令標識屬性。

@interface Fraction : NSObject

@property int numerator, denominator;

@end

2)在實現部分使用@synthesize指令即可。

@inplementation Fraction

@synthesize numerator, denominator;

@end


如果使用了@property指令,就不需要在實現部分聲明相應的實例變量。

通常,如果有稱爲x的屬性,那麼在實現部分包括以下行會導致編譯器自動實現一個取值方法x和一個設置方法setX:

@synthesize x;

因爲生成的存取方法是高效的,並且在使用多個核心的多臺機器上,使用多線程時也可正常運行。(這裏的說法呢,就是說線程安全的)


訪問屬性:

可以使用點運算符.,或發送消息[]

[myFraction numerator];

myFraction.numerator;

一般格式:

instance.property = value;

等價於

[instance setProperty: value]


需要指出的是,也可以對自定義的方法使用點運算符,不僅僅是使用在synthesize上(即屬性)。

注意:

點運算符和發消息都是可以的,但是,點運算符通常使用在屬性上,用於設置或取得實例變量的值。方法在Apple的文檔中被標記爲任務(Task),任務通常不是由dian運算符執行的,而是使用傳統的方括號形式的消息表達式作爲首選的語法。

另外,使用合成(synthesize)的存取方法,屬性名稱的前面不要以new、alloc、copy和init這些此開頭。這與編譯器的一些假定有關,因爲編譯器會合成相應的方法。


關於方法:

在編寫新方法時,省略參數名不是一種好的編程風格,因爲它是程序很難讀懂並且很不直觀,特別是當使用的方法參數特別重要時,更是如此。

[aFraction set:1 :3]這是不好的

[aFraction set:1 over:3]這是好的


- (void)add:(Fraction *) f;

這條語句說明add:方法的參數是Fraction類對象的一個引用。星號是必須的,所以聲明(Fraction) f是不正確的。


局部變量:

局部變量是基本的C數據類型,並沒有默認的初始值,所以在使用前要先賦值。局部對象變量默認初始化爲nil。和實例變量不同(它們在多次方法調用時保持自己的值),這些局部變量沒有記憶力。也就是說,當方法返回時,這些變量的值都消失了。每次調用方法時,該方法中的局部變量都使用變量聲明重新初始化一次。


方法的參數:

方法的參數名也是局部變量。執行方法時,通過方法傳遞的任何參數都被複制到局部變量中。因爲方法使用參數的副本,所以不能改變通過方法傳遞的原值。這一點很重要。

另外,如果參數是對象,可以更改其中的實例變量值。當你傳遞一個對象作爲參數時,實際上是傳遞了一個數據存儲位置的引用。正因爲如此,你才能夠修改這些數據。


static關鍵字:

在變量聲明前加上關鍵字static,可以使局部變量保留多次調用一個方法所得的值。和其它基本數據類型的局部變量不同。靜態變量的初始值爲0。此外,它們只在程序開始執行時初始化一次,並且在多次調用方法時保存這些數值。

記住:只能在定義靜態變量和局部變量的方法中訪問這些變量。


總的說來,這一章裏面的很過概念還是比較重要的,在別的語言裏也有描述這些。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章