獲取類的對象
[實例對象 class];
[類名 class];
Class *c1 = [p1 class];
2.用于創(chuàng)建實例對象
person * p3= [[c3 alloc]init];
2.2用于調(diào)用方法
[c1 test];
3.用于作為函數(shù)參數(shù)
-(void)test(Class c)
{
id obj = [[c alloc]init];
return obj;
}
小寫 class 是方法
大寫Class是數(shù)據(jù)類型
//問題:類的本質(zhì)是什么?
答:
創(chuàng)建類對象
類其實也是一個對象, 這個對象會在這個類第一次被使用的時候創(chuàng)建
只要有了類對象, 將來就可以通過類對象來創(chuàng)建實例對象
實例對象中有一個isa指針, 指向創(chuàng)建自己的類對象
類對象中保存了當(dāng)前對象所有的對象方法
當(dāng)給一個實例對象發(fā)送消息的時候, 會根據(jù)實例對象中的isa指針去對應(yīng)的類對象中查找
所有類對象的繼承關(guān)系就是元類對象的繼承關(guān)系
----------------------------------------------------------------
#mark- 17-獲取類對象及類對象應(yīng)用場景
//問題1:如何獲取類對象?
答:
[Person class]
// [實例對象 class]; [類名 class];
Person *p1 = [[Person alloc] init];
Person *p2 = [[Person alloc] init];
// 一個類再內(nèi)存中只有一份類對象
Class c1 = [p1 class];
Class c2 = [p2 class];
Class c3 = [Person class];
NSLog(@"c1 = %p, c2 = %p, c3 = %p", c1, c2, c3);
//問題2:類對象的應(yīng)用場景
答:
用于創(chuàng)建實例對象
Person *p3 = [[c1 alloc] init];
p3.age = 30;
NSLog(@"%i", p3.age);
用于調(diào)用類方法
[Person test];
[c1 test];
類的本質(zhì)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 類的本質(zhì) 本質(zhì)類其實也是一個 對象, 這個對象會在這個類第一次被使用的時候創(chuàng)建, 一個類再內(nèi)存中只有一份類對象只要...
- 前言 今天整理了下自己電腦里的一些碎片筆記,時間有限只整理了這篇文章——類的本質(zhì),大家可以進(jìn)行參考。 1.本質(zhì) 類...
- 架構(gòu)、性能、游戲 在開始讀第一章的時候會覺得有點混亂,作者提出了什么是架構(gòu)這個問題,但是并沒有像其它書里那樣給出一...