關於內存方面,retain,copy,assign

 

內存管理機制

 引用計數:因爲OC中不存在垃圾回收機制,所以才根據引用計數回收機制。當引用計數爲0時,銷燬空間。也就是說,根據引用計數來確定一個對象是否釋放

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

 便利構造器

自動釋放池:

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

   retain:引用計數+1 操作,獲取對象的所有權,與release 對應。

   線程:注意當視圖退出時,需要關閉自己所開線程


   alloc : 開闢空間,引用計數有0變爲1,dealloc :銷燬空間 手動調用dealloc 時候會強制將引用計數置爲0;

   copy:將源數據重新複製一份,原數據引用計數不變,拷貝的一份引用計數+1;複製一個對象,並且存儲在不同的內存區,原對象的引用計數不變。遵循NSCoping 協議的可以深拷貝。

   assign :整形或者其他常量的引用計數。不發生改變

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

    weak 類似assign ,弱引用,引用計數不會增加。釋放指針自動置爲nil

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

    readwrite:讀寫,既有setter 和 getter 

    readonly:只有讀操作,即只有getter

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

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

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章