类的本质 Objective-C基础
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 如何拿到存儲在代碼段的中的類
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)用。
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开发人员,请爱护你的身体
- 下一篇: mac虚拟机的安装