国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

ios開(kāi)發(fā):OC對(duì)象的內(nèi)存分析

2019-11-14 19:21:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

   最近要開(kāi)始準(zhǔn)備找實(shí)習(xí)單位了,做做筆試題,看看各位大神的面試經(jīng)歷,發(fā)現(xiàn)自己要學(xué)習(xí)的東西真的還有很多,雖然也做過(guò)幾個(gè)的項(xiàng)目,但是真正拿過(guò)筆試題一看,才發(fā)現(xiàn)自己對(duì)基礎(chǔ)這方面的東西,確實(shí)有點(diǎn)忽視了,所以最近開(kāi)啟惡補(bǔ)模式。

   這幾天在研究ios內(nèi)存分析這一塊,才發(fā)現(xiàn)自己原來(lái)忽視了這么多重要的東西,在這里和大家分享一下。

   先來(lái)看一段代碼:

    

NSString* s;
s = [[NSString alloc] initWithString:@"hello ios"];

  這是一段最簡(jiǎn)單的字符串定義,但是看似簡(jiǎn)單,其實(shí)有很多東西可能會(huì)被忽略掉

  1.這里的s其實(shí)是個(gè)指針,在oc中除了基本數(shù)據(jù)類(lèi)型之外的變量類(lèi)型都是指針類(lèi)型,oc的對(duì)象也是通過(guò)指針進(jìn)行操作的。

  2. 在第一段代碼定義了NSString類(lèi)型的指針變量,但是并沒(méi)有指向任何對(duì)象,第二段代碼alloc一個(gè)NSString對(duì)象  然后使s指向它,并通過(guò)s開(kāi)始其的后續(xù)操作。

  3. 這里s的內(nèi)存空間在棧內(nèi)存中,“hello ios”在堆內(nèi)存中。

下面通過(guò)圖示說(shuō)明一下

再來(lái)看一個(gè)例子

@interface C: NSObject{  int a;  int b;       }@endint main(int argc, const char *argv[]){  C *c1 = [[C alloc]init];  C *c2 = [[C alloc]init];      }

內(nèi)存分布情況

  看到這里大家也就能明白了,oc中創(chuàng)建的對(duì)象指針存儲(chǔ)在棧內(nèi)存中,而alloc出來(lái)的對(duì)象的內(nèi)存在堆內(nèi)存中,棧內(nèi)存中的指針通過(guò)賦值指向堆內(nèi)存中的對(duì)象,然后通過(guò)棧內(nèi)存中的指針訪問(wèn)對(duì)象及其變量,也就是說(shuō),其實(shí)我們?cè)趧?chuàng)建一個(gè)對(duì)象時(shí)其實(shí)是利用了兩個(gè)部分的內(nèi)存空間。

  


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 迁西县| 阿拉善盟| 杭锦后旗| 定南县| 阿巴嘎旗| 华容县| 阜新市| 旬阳县| 连平县| 朔州市| 安图县| 定远县| 抚顺县| 江北区| 无棣县| 龙州县| 云南省| 鹤山市| 平罗县| 赤壁市| 凤庆县| 宣城市| 沧州市| 仁化县| 原阳县| 拜城县| 贵德县| 庄河市| 老河口市| 鄂尔多斯市| 岳西县| 沙河市| 合作市| 泸溪县| 康定县| 体育| 界首市| 阿克陶县| 浑源县| 临猗县| 桐柏县|