Objective-C 内存管理机制
生活随笔
收集整理的這篇文章主要介紹了
Objective-C 内存管理机制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么要進行內存管理? 由于移動設備的內存極其有限,所以每個APP所占的內存也是有限制的,當app所占用的內存較多時,系統(tǒng)就會發(fā)出內存警告,這時需要回收一些不需要再繼續(xù)使用的內存空間,比如回收一些不再使用的對象和變量等。 OC內存管理方式? OC的內存管理不同于其他高級語言如C#、Java都是通過垃圾回收機制,ObjC內存管理采用引用計數機制。 管理范圍:任何繼承NSObject的對象,對其他的基本數據類型無效。 什么是引用計數? 引用計數機制:在ObjC中每個對象內部都有一個與之對應的整數(retainCount),叫“引用計數器”,當一個對象在創(chuàng)建之后它的引用計數器為1,當調用這個對象的alloc、retain、new、copy方法之后引用計數器自動在原來的基礎上加1(ObjC中調用一個對象的方法就是給這個對象發(fā)送一個消息),當調用這個對象的release方法之后它的引用計數器減1,如果一個對象的引用計數器為0,則系統(tǒng)會自動調用這個對象的dealloc方法來銷毀這個對象。 什么是自動引用技術? 自動引用計數:指內存管理中對引用采取自動計數的技術。蘋果官方說明如下:在Objective-C中采取Automatic Refrence Counting(ARC)機制,讓編譯器來進行內存管理。“在LLVM編譯器中設置ARC為有效狀態(tài),就無需再次鍵入retain或者release代碼”換言之,滿足以下條件無需手動輸入retain和release代碼了。 1.使用Xcode4.2以上版本; 2.使用LLVM編譯器3.0或者以上版本; 3.編譯器選項中設置ARC為有效。 滿足以上條件,編譯器將自動管理內存。 注?若需要在Xcode中關閉ARC:項目屬性—Build Settings--搜索“garbage”找到Objective-C Automatic Reference Counting設置為No即可。 內存管理原則? 原則1
只要還有人在使用某個對象,那么這個對象就不會被回收;
只要你想使用這個對象,那么就應該讓這個對象的引用計數器+1;
當你不想使用這個對象時,應該讓對象的引用計數器-1;
原則2 誰創(chuàng)建,誰release
(1)如果你通過alloc,new,copy來創(chuàng)建了一個對象,那么你就必須調用release或者autorelease方法
(2)不是你創(chuàng)建的就不用你去負責
原則3 誰retain,誰release
只要你調用了retain,無論這個對象時如何生成的,你都要調用release
總結:有始有終,有加就應該有減。曾經讓某個對象計數器加1,就應該讓其在最后-1.
?
?轉載于:https://www.cnblogs.com/echo-imax/p/4576757.html
總結
以上是生活随笔為你收集整理的Objective-C 内存管理机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 选择指定的MySQL数据库
- 下一篇: 已有打开的与此 Command 相关联的