記憶體管理
閃退:1.記憶體洩露(不管理記憶體)
2.記憶體過度釋放
oc:1.手動管理記憶體(mrc)//弊端 容易過度釋放
2.自動管理記憶體(arc)//弊端 錯誤都出在底層 不易查詢
垃圾**//只限於mac應用程式
手動管理記憶體:
引用計數增加: 引用計數減少:
+alloc//開闢記憶體 0 -> 1 |
-retain +1 | -release -1
-copy(只有字串可以用)原來的不變 | -autorelease//自動 延遲釋放 在某個地方控制
新開闢記憶體 0 -> 1 |
記憶體管理:
//1.記憶體的所有權:只有對記憶體有所有權的指標,才能夠release 改變引用計數
//alloc retain copy 都能使物件獲得記憶體的所有權
//release autorelease 都能使物件放棄記憶體的所有權
//2.有建立就有**,有+1就有-1
//3.引用計數的概念:有多少個物件對記憶體有所有權
//4.在乙個方法/類中,記憶體的引用計數要保持平衡(+多少 -多少)
方法 在物件的引用計數為0時,系統強制呼叫,用於**記憶體
//6.屬性的記憶體管理 物件型別的屬性,需要在dealloc中釋放一次
//7.自動釋放池 負責釋放池子範圍內所有被標記為autorelease的物件 @autoreleasepool{}
//如果是nsautoreleasepool物件建立的池子,使用drain可以清空池子裡的所有物件
//8.構造器的記憶體管理 在返回這個物件的時候,使用autorelease自動釋放池:
@autoreleasepool{
iOS開發 Day20 OC 手動記憶體管理
1 只要呼叫了alloc,就必須有release autorelease 2 set方法的 規範 1 基本資料型別 直接複製 void setage int age 2 oc物件型別 void setcar car car 3 dealloc方法的 規範 一定要 super dealloc 而且要放...
ios學習記錄 day3
1.switch case 順序向下執行 2.default的作用 3.break的特性 會12345也要會54321 54321要從下往上想 不用break的時候 int a 0,b 0,result 0 char c 0 scanf d c d a,c,b switch c printf res...
ios學習記錄 day24 UI 3 複習
1.屬性的初始化 的時候 即賦值的時候 必須用self.其它地方可以用 在自定義的dealloc中要release 2.111 2x.png 4 4s用的圖的名 用的時候直接寫111.png就行 required background modes item0 後台可以執行的情況 9種 4.向手機傳送...