類的本質(zhì)

獲取類的對象
[實例對象 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];
最后編輯于
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容