ios開發(fā)copy字符串 ios字符串為什么用copy

iOS中assign,copy,retain之間的區(qū)別以及weak和strong的區(qū)別

1、也就是說,retain 是指針拷貝,copy 是內(nèi)容拷貝。strong,weak 用來修飾屬性。

成都創(chuàng)新互聯(lián)是一家專業(yè)提供湖口企業(yè)網(wǎng)站建設,專注與成都網(wǎng)站制作、網(wǎng)站建設、外貿(mào)網(wǎng)站建設H5響應式網(wǎng)站、小程序制作等業(yè)務。10年已為湖口眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設公司優(yōu)惠進行中。

2、copy是創(chuàng)建一個新對象,retain是創(chuàng)建一個指針,引用對象計數(shù)加1。Copy屬性表示兩個對象內(nèi)容相同,新的對象retain為1 ,與舊有對象的引用計數(shù)無關,舊有對象沒有變化。copy減少對象對上下文的依賴。

3、copy與strong類似。不同之處是strong的復制是多個指針指向同一個地址,而copy的復制每次會在內(nèi)存中拷貝一份對象,指針指向不同地址。copy一般用在修飾有可變對應類型的不可變對象上,如NSString, NSArray, NSDictionary。

IOS中Retain和Copy的區(qū)別

1、同,這個對象的 retain 值+1 assign 地址還是0x1111,內(nèi)容也還是“ABC”。也就是說,retain 是指針拷貝,copy 是內(nèi)容拷貝。strong,weak 用來修飾屬性。

2、也就是說,retain是指針拷貝,copy是內(nèi)容拷貝。

3、retain:引用計數(shù)器+1,指向同一地址。結果和淺拷貝一樣,僅僅是使得對象的引用計數(shù)器自增copy:對不可變對象等同與retain,指針拷貝,引用計數(shù)器+1。對可變對象執(zhí)行深拷貝,等同mutableCopy,內(nèi)容拷貝。

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

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

淺拷貝就是拷貝指向原來對象的指針,使原對象的引用計數(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: 淺拷貝,也就是指針引用,很明顯的。我們來測試一下 運行結果如下,實際對象是一致的。

新聞名稱:ios開發(fā)copy字符串 ios字符串為什么用copy
轉載源于:http://muchs.cn/article43/dgdcees.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)商城網(wǎng)站、云服務器、ChatGPT網(wǎng)站改版、外貿(mào)建站

廣告

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

成都定制網(wǎng)站建設