黑馬程式設計師——oc
基礎---
類的本質
------- android培訓
、ios培訓
、期待與您交流! ----------
內容概括:
1、深入介紹類的核心及本質。
2、類的呼叫、輸出及sel
型別。
類的本質:
1、類本身也是個物件,是class
型別的物件,簡稱類物件。
建立過程
1.class建立出
person
類物件。
2.再用
person
類物件建立
person
類的物件。
2、獲取記憶體中的類物件方法,返回的class
物件是同乙個類。
1.class c = [p class];
2.class c2 = [p2 class];
3.class c3 = [person class];
3、設在person
類中有乙個
test
方法,可通過如下方法呼叫。
[person test]; // 直接呼叫
person *p = [ [person alloc] init]; // 建立乙個類物件後再呼叫。
class c = [p class]; // c就是類物件。
[c, test];
類的載入及輸出:
1、類的載入:當程式啟動時時候,就會載入一次專案中所有的類(也會載入分類),類載入完畢後就會呼叫+load
方法,且只呼叫一次。
2、類的使用:當第一次呼叫這個類時,就會呼叫一次這個類的+initialize
方法(如果有分類,優先呼叫分類的這個方法)。
3、載入順序:先載入父類,再載入子類(先呼叫父類的load
方法,再呼叫子類的
load
方法)。
注意:1.+initialize 監聽類什麼時候被使用。
2.類名就代表類物件,每個類只有乙個類物件。
類的輸出:
可以用nslog
輸出類的所有屬性嗎?那麼又該怎樣輸出。
1、預設情況下,利用nslog和%@
輸出物件時,結果是
<
>。
2、使用nslog
時,即nslog
(@」%@」, p):
1.會呼叫物件平p的
-description
方法。
2.拿到
- description
方法的返回值(
nsstring *
)顯示到螢幕上。
3.-description方法返回的是「類名
+ 記憶體位址」,為了輸出物件的所有屬性,要重寫
- description
方法。
所以類的-description
方法決定類物件的輸出結果。
示例:
+ (nsstring * ) description
int main()
sel型別:(方法的包裝資料型別)
1、方法都以sel
資料型別儲存在類中。
int main()
person *p = [ [person alloc] init];
[p test2];
上述**呼叫時,內部分為以下三步。
1.把text2
包裝成sel
型別的資料。
2.根據
sel資料找到方法位址。
3.根據方法位址呼叫對應的方法。
呼叫方法的另一種方式。
1、[p performselector : @ selector (test2: withobject
:引數)];
2、每個方法都有乙個與之對應的sel
資料。
3、根據乙個sel
物件就可以找到方法的位址,進而呼叫方法。
*疑問:本節中方法名的書寫
2、sel物件的建立。
1> sel s = @selector(
test);
2> sel s2 = nssekctorfromstring(@「
test
」);
3> 每個方法內部都有乙個
sel資料
-cmd
,它代表著當前方法。
示例:
#import "person.h"
@implementation person
- (void)test
- (void)test3:(nsstring *)abc
@end
黑馬程式設計師 OC基礎07 類的本質
asp.net unity開發 net培訓 期待與您交流!一 概念 類也是乙個物件,是class型別的物件,簡稱 類物件 類名就代表著類物件,每個類只有乙個類物件。typedef struct objc class class 二 獲取類物件的方式 1 類方法 class c person clas...
黑馬程式設計師 分類以及類的本質研究
asp.net unity開發 net培訓 期待與您交流!更改xcode 模板 category 分類,類別,類目 可以給某乙個類擴充一些方法 不修改原來類的 基本形式 宣告 inte ce 類名 分類名稱 end 實現 implementation 類名 分類名稱 end 示例 不用繼承,不改動p...
黑馬程式設計師 Java String 類
asp.net android ios開發 net培訓 期待與您交流!1 string類 1 字串 多個字元組成的一串資料。2 構造方法 a string s new string b string s new string byte bys c string s new string byte b...