ios開發(fā)淺拷貝在哪用 深淺拷貝ios

iOS深拷貝與淺拷貝(附demo)

學(xué)習(xí)資料 首先iOS拷貝可以區(qū)分為 深拷貝 和 淺拷貝 。 淺拷貝 :拷貝了對(duì)象的指針,可以理解為給一條狗加了一條繩子。 深拷貝 :直接拷貝對(duì)象到另外一塊內(nèi)存地址中,可以理解為新買了一條狗。

十載的北海街道網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整北海街道建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“北海街道網(wǎng)站設(shè)計(jì)”,“北海街道網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

淺拷貝就是拷貝指向原來對(duì)象的指針,使原對(duì)象的引用計(jì)數(shù)+1,可以理解為創(chuàng)建了一個(gè)指向原對(duì)象的新指針而已,并沒有創(chuàng)建一個(gè)全新的對(duì)象。

用copy修飾的屬性,在setter時(shí),會(huì)先調(diào)用傳入對(duì)象的copy方法得到一份拷貝后再retain,但不同的對(duì)象調(diào)用copy方法,可能是深拷貝也可能是淺拷貝,如果是淺拷貝,則兩個(gè)指針指向一個(gè)內(nèi)存,舊對(duì)象引用計(jì)數(shù)會(huì)加1。

深拷貝 :內(nèi)容拷貝,拷貝數(shù)據(jù)到一塊新內(nèi)存區(qū)域,指針指向拷貝的數(shù)據(jù)區(qū) strong: 淺拷貝,也就是指針引用,很明顯的。我們來測(cè)試一下 運(yùn)行結(jié)果如下,實(shí)際對(duì)象是一致的。

用一句簡(jiǎn)單的話來說就是淺拷貝只是對(duì)指針的拷貝,拷貝后兩個(gè)指針指向同一個(gè)內(nèi)存空間,深拷貝不但對(duì)指針進(jìn)行拷貝,而且對(duì)指針指向的內(nèi)容進(jìn)行拷貝,經(jīng)深拷貝后的指針是指向兩個(gè)不同地址的指針。

淺拷貝:淺拷貝是對(duì)object對(duì)象的指針拷貝,讓指針指向同一塊內(nèi)存地址,“對(duì)象永遠(yuǎn)只有一個(gè),淺拷貝使對(duì)象的引用計(jì)數(shù)器+1。代碼如下:可以看出不可變字符串的指針指向了同一地址,并沒有重新開辟內(nèi)存。

iOS中的深淺拷貝

不一定。用copy修飾的屬性,在setter時(shí),會(huì)先調(diào)用傳入對(duì)象的copy方法得到一份拷貝后再retain,但不同的對(duì)象調(diào)用copy方法,可能是深拷貝也可能是淺拷貝,如果是淺拷貝,則兩個(gè)指針指向一個(gè)內(nèi)存,舊對(duì)象引用計(jì)數(shù)會(huì)加1。

淺拷貝又叫指針拷貝,只拷貝對(duì)象指針,不創(chuàng)建新的對(duì)象,拷貝對(duì)象和原對(duì)象都指向同一塊內(nèi)存地址的內(nèi)容。

copy出來的字符串一定是不可變字符串,如果傳入的是可變字符串,會(huì)發(fā)生深拷貝為不可變字符串,否則為淺拷貝。 mutablecopy,一定是深拷貝,拷貝出來的一定是可變字符串或者數(shù)組,即使傳入的是不可變字符串或者數(shù)組。

理解iOS中深淺拷貝-為什么NSString使用copy

到這里全部真相大白了,說明我們的copy修飾的array進(jìn)行了淺拷貝,我們知道只有當(dāng)不可變對(duì)象使用copy時(shí)才是淺拷貝,那我們copy修飾的是一個(gè)可變數(shù)組,賦值的是一個(gè)不可變數(shù)組。

分析:strstr2地址相同并且與str3地址不同,NSString的copy是淺拷貝,且copy返回的對(duì)象是不可變對(duì)象;mutableCopy是深拷貝。

通俗解釋:深拷貝是內(nèi)容拷貝,淺拷貝是地址拷貝 區(qū)別點(diǎn):深拷貝會(huì)創(chuàng)建一個(gè)新的內(nèi)存空間,拷貝的值是一樣的,但是內(nèi)存地址不一樣。

網(wǎng)站欄目:ios開發(fā)淺拷貝在哪用 深淺拷貝ios
網(wǎng)頁(yè)鏈接:http://bm7419.com/article20/dgssjjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、品牌網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)公司、建站公司用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)