溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

關(guān)于內(nèi)存方面,retain,copy,assign

發(fā)布時間:2020-07-31 19:11:25 來源:網(wǎng)絡(luò) 閱讀:520 作者:lulun426 欄目:開發(fā)技術(shù)

 

內(nèi)存管理機制

 引用計數(shù):因為OC中不存在垃圾回收機制,所以才根據(jù)引用計數(shù)回收機制。當(dāng)引用計數(shù)為0時,銷毀空間。也就是說,根據(jù)引用計數(shù)來確定一個對象是否釋放。

  可以改變引用計數(shù)的操作:allco retain release copy dealloc 

 便利構(gòu)造器

自動釋放池:

 每次對象調(diào)用autorelease 方法時(obj-c中的正式說法應(yīng)該是:給對象發(fā)送autorelease消息),對象的引用計數(shù)并不是真正變化,而是向pool中添加一條記錄,記下對象的這種要求。最后當(dāng)pool發(fā)送drain 或者 release 消息時,池中的所有對象的這種要求一一被執(zhí)行(即:pool被銷毀前,會通知池中的所有對象,全部發(fā)送release 消息真正將引用計數(shù)減少,如果對象之前沒有發(fā)送過autorelease 消息)

   retain:引用計數(shù)+1 操作,獲取對象的所有權(quán),與release 對應(yīng)。

   線程:注意當(dāng)視圖退出時,需要關(guān)閉自己所開線程


   alloc : 開辟空間,引用計數(shù)有0變?yōu)?,dealloc :銷毀空間 手動調(diào)用dealloc 時候會強制將引用計數(shù)置為0;

   copy:將源數(shù)據(jù)重新復(fù)制一份,原數(shù)據(jù)引用計數(shù)不變,拷貝的一份引用計數(shù)+1;復(fù)制一個對象,并且存儲在不同的內(nèi)存區(qū),原對象的引用計數(shù)不變。遵循NSCoping 協(xié)議的可以深拷貝。

   assign :×××或者其他常量的引用計數(shù)。不發(fā)生改變

   在ARC模式下,strong 與retain相似,strong,用于ARC模式下,表明對象屬于強引用,類似retain ,但是比retain更加安全,只要對象存在擁有者,就可以引用,不會被釋放,只要對象失去擁有者,立即被拋棄,不必再將已經(jīng)指向已經(jīng)釋放的對象的指針指向空。避免了野指針。

    weak 類似assign ,弱引用,引用計數(shù)不會增加。釋放指針自動置為nil

   在ARC模式下,weak 與 assign 相似,

    readwrite:讀寫,既有setter 和 getter 

    readonly:只有讀操作,即只有g(shù)etter

    nonatomic :非原子特性,不保證多線程下保護安全

    atomic:原子特性,保證多線程下安全,有一個屬性需要對個線程同時訪問一個變量,使用atomic 能夠自動枷鎖解鎖。

     

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI