日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

类的本质 Objective-C基础

發(fā)布時間:2023/12/18 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 类的本质 Objective-C基础 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.內(nèi)存中的五大區(qū)域



BSS段

數(shù)據(jù)段
代碼段

代碼段 是用來存儲代碼的

類加載 當(dāng)類第1次 被訪問的時候 這個類就會被加載到代碼段存儲起來

2 討論問題
類什么時候加載到代碼段

類第1次被訪問的時候類就會被加載到代碼段存儲 類加載

類以什么樣的形式存儲在代碼段

類一旦被加載到代碼段之后 什么時候回收

是不會被回收的除非程序結(jié)束

1 任何存儲在內(nèi)存中的數(shù)據(jù)都1個數(shù)據(jù)類型
int num =12;
float 12,2f;
‘a(chǎn)’

任何在內(nèi)存中申請的空間也有自己家的類型

Perosn *p1 =[Person new];

  • 在代碼段存儲類的那塊空間是個什么類型的
    在代碼段中存儲類的步驟
    a 先在代碼段中創(chuàng)建1個Class對象 Class是Foundation框架中的1個類
    b 把類的信息存儲在這個Class對象之中
  • 這個Class 對象 至少有3個屬性

    類名存儲這個類的名稱
    屬性s存儲這個類的具體的哪些屬性
    方法s 存儲這個類的具體的哪些方法

    所以類是以Class 對象的形式存儲形式存儲在代碼段的
    存儲類的這個Class 對象 我們叫做類對象
    用來存儲類的1個對象

    所以存儲類的類對象也有1個叫做isa指針的屬性
    這個指針指向存儲父類的類對象。

    4 如何拿到存儲在代碼段的中的類

  • 調(diào)用類的類方法 class 就可以得到存儲類的類方法
  • 調(diào)用對象的對象方法 class 就可以得到存儲這個對象的所屬的類的Class對象的地址。
    3) 對象中的isa指針的值其實(shí)就是代碼段中存儲類的的類對象的地址
  • 注意
    聲明Class 指針的時候 不需要加* 因?yàn)樵趖ypedef 的時候就已經(jīng)加了*了。

    5.如何使用類對象

    1) c1 指的是 存儲Person類的類對象
    Class c1 =[Person class];
    c1 對象就是Person類
    c1 完全等價(jià)于Person
    2) 使用類對象來調(diào)用類方法。

    因?yàn)轭悓ο缶痛泶鎯@個類對象中類

    Class c1 = [Person class];
    c1 就代表Person類
    所以在使用Person的地方完全可以使用c1代替

    比如我們使用類名來調(diào)用類方法
    [Person sayHi];
    完全可以使用c1來調(diào)用 因?yàn)閏1就是Person
    [c1 sayHi];

    Class c1 = [Person class];
    第二種創(chuàng)建對象的方法
    Person *p1 = [c1 new];

    4) 注意使用類對象
    只能使用類的類方法 因?yàn)轭惖臋C(jī)械就等價(jià)于存在其中的類

    不能調(diào)用對象方法。

    1類是以Class 對象的形式存儲在代碼段中的

    2 如何拿到存儲類的類類對象
    3 有什么用
    可以使用類對象調(diào)用類的類方法

    要調(diào)用Person的類方法 可以使用Person調(diào)用。

  • Person *p1 =[Person new];
    Class c1=[Person class];
    Person *p1 =[Person new];
    Person *p1 =[c1 new];
  • [Class c1 =[Person class];
    NSLog(@“c1 = %p”,c1);
    Person *p1 = [Person new];
    Class c2 = [p1 class];
    NSLog(@“c1 = %p”,c2);

    總結(jié)

    以上是生活随笔為你收集整理的类的本质 Objective-C基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。