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

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

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

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

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

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

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

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

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

iOS中的深淺拷貝

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

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

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

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

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

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

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

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

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

廣告

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

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