新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
OC類(lèi)的介紹-創(chuàng)新互聯(lián)
類(lèi)的本質(zhì)
本文名稱(chēng):OC類(lèi)的介紹-創(chuàng)新互聯(lián)
分享地址:http://www.dlmjj.cn/article/icpco.html

1 類(lèi)的本質(zhì)其實(shí)也是一個(gè)對(duì)象(類(lèi)對(duì)象)
2
3 類(lèi)對(duì)象
4 類(lèi)對(duì)象再程序運(yùn)行時(shí)一直存在
5 類(lèi)對(duì)象是一種數(shù)據(jù)結(jié)構(gòu),存儲(chǔ)類(lèi)的基本信息:類(lèi)大小,類(lèi)名稱(chēng),類(lèi)的版本以及消息與函數(shù)的映射表等
6 類(lèi)對(duì)象所保存的信息在程序編譯時(shí)確定,在第一次使用該類(lèi)的時(shí)候加載到內(nèi)存中
7 類(lèi)對(duì)象代表類(lèi),class代表類(lèi)對(duì)象,類(lèi)方法屬于類(lèi)對(duì)象
8 如果消息的接受者是類(lèi)名,則類(lèi)名表示類(lèi)對(duì)象
9 運(yùn)行時(shí),所有類(lèi)的實(shí)例都由類(lèi)對(duì)象生產(chǎn),類(lèi)對(duì)象會(huì)把實(shí)例的isa地值修改成自己的地址,每個(gè)實(shí)例的isa都指向該實(shí)例的類(lèi)對(duì)象,
10 從類(lèi)對(duì)象里可以知道父類(lèi)信息、可以響應(yīng)的方法等
11 類(lèi)對(duì)象只能使用類(lèi)方法,不能用實(shí)例方法
12
13 例:
14 Person *p = [Person new];
15 p 實(shí)例對(duì)象
16 Person 也是一個(gè)對(duì)象(類(lèi)對(duì)象),是Class類(lèi)型
類(lèi)對(duì)象的獲取
1 1)通過(guò)實(shí)例對(duì)象獲取
2 Dog *dog =[Dog new];
3 Dog *d2 = [Dog new];
4
5 //第一種方法獲取類(lèi)對(duì)象 6 Class c =[dog class];
7 Clsss c2 =[d2 class];
8
9 NSLog(@"%p",c);
10 NSLog(@"%p",c2);
11
12 2)通過(guò)類(lèi)名獲取(類(lèi)名其實(shí)就是類(lèi)對(duì)象)
13
14 Class c3=[Dog class];
15 NSLog(@"%p",c3);
類(lèi)對(duì)象的使用
1 原來(lái)使用類(lèi)名可以做哪些事情?
2 創(chuàng)建對(duì)象
3 [Person new];
4 調(diào)用類(lèi)方法
5 [Person test];//test是類(lèi)方法 6
7 Person *p =[Person new];
8
9
10
11 c1---->Person
12
13 類(lèi)對(duì)象的使用
14 Class c1 =[p class]; //Person15 1)創(chuàng)建實(shí)例對(duì)象
16 Person *p1= [c1 new];
17 2)調(diào)用類(lèi)方法
18 [p test]; 調(diào)用的是實(shí)例方法 -動(dòng)態(tài)的
19 [c1 test]調(diào)用的是類(lèi)方法 +靜態(tài)的
SEL類(lèi)型
1 SEL:全稱(chēng)selector表示方法的存儲(chǔ)位置
2
3 Person *p =[[Person allco]init];
4 [p test];
5
6 尋找方法的過(guò)程:
7 1)首先把test這個(gè)方法名包裝成sel類(lèi)型的數(shù)據(jù);
8 2)根據(jù)SEL數(shù)據(jù)找到對(duì)應(yīng)的方法地址;
9 3)根據(jù)方法地址調(diào)用相應(yīng)的方法
10 4)注意:在這個(gè)操作過(guò)程中有緩存,第一次找的時(shí)候是一個(gè)一個(gè)的找,非常耗性能,之后再用到的時(shí)候就直接使用
11
12 關(guān)于_cmd:每個(gè)方法的內(nèi)部都有一個(gè)_cmd,代表著當(dāng)前方法
13
14 SEL其實(shí)是對(duì)方法的一種包裝,將方法包裝成一個(gè)SEL類(lèi)型的數(shù)據(jù),去尋找對(duì)應(yīng)的方法地址,找到方法地址就可以調(diào)用方法.這些都是運(yùn)行時(shí)特征,發(fā)消息就是發(fā)送SEL,然后根據(jù)SEL找到地址,調(diào)用方法
15 //手動(dòng)的把eat方法包裝成SEL類(lèi)型16 SEL s1 =@selector(eat);
17 //通過(guò)s1去調(diào)用了18 [p2 perfomSelector :s1];
本文名稱(chēng):OC類(lèi)的介紹-創(chuàng)新互聯(lián)
分享地址:http://www.dlmjj.cn/article/icpco.html