mrc手動記憶體管理:
1.系統不會去檢查已釋放的物件,也就是說,當乙個物件的引用計數為0時,這個物件此時再呼叫其方法不會報錯,(成為野指標),除非開啟殭屍除錯診斷,一旦開啟殭屍診斷就會發現崩潰。
2.當把這個物件賦值為nil時,(成為空指標),再呼叫其方法,將不會出錯,更不會崩潰。3.dealloc方法必須含有[super dealloc],且必須放在函式最後一行。當物件的引用計數為0時,系統就會自動呼叫物件的dealloc方法,且程式設計師不能呼叫dealloc方法,只能是系統自動呼叫。
4. alloc retain release retaincount dealloc
5.new,alloc,retain,copy,誰生成誰負責釋放。
6.成員物件初始化時都為nil
7. set方法在左邊person.name = ?,等同於[person setname: ],get方法右邊? = person.name
8. set方法:
當你需要乙個物件時,就進行一次retain;
當你不需要乙個物件時,就進行一次release;
當你接受乙個新的物件時,需要release舊物件,retain新物件;
若新物件與舊物件是乙個物件,就不需要記憶體管理的**。
{9-11 property}
9.retain需要在setter和getter方法中加入一些記憶體管理的**,當屬性是乙個普通oc物件時,使用retain;assign直接賦值,不生成記憶體管理**,當屬性是乙個基本資料時,使用assign;copy複製物件,nsstring使用copy。
10.執行緒安全:nonatomic 非原子,不會生成執行緒安全的**,速度快,ios通常都是這種;atomic原子(預設),會生成執行緒安全的**。
11.控制許可權 readwrite可讀可寫,生成getter和setter方法;readonly只生成getter方法
12. 修改方法名稱修改生成的getter方法的名稱或setter方法的名稱
13.迴圈引用,其中的一端必須為assign或__weak
自動釋放池,只要是從乙個方法裡返回物件,或快捷的構造方法(類方法),都需使用自動釋放池。
自動記憶體管理:dealloc中沒有[super dealloc]。
通過類方法建立的物件都放在離它最近的方法池中。
當自動釋放池銷毀時,才會解除自動釋放對改物件的引用。
mrc轉arc 全部 factor-> mrc convert to arc 區域性某類 -fno-objc-arc
定義block型別的格式:返回值
(^block名稱)(形參列表)void (^blockname)() 實現格式:^返回值
形參列表 {}; ^ void(){}; int (^sum)(int a, int b) = ^ int (int a, int b);
協議:多型
block輸入按return鍵直接彈出大括號加分號。ibaction右擊彈出選單選事件型別,直接連線到檢視控制器。
記憶體管理實驗筆記
內部sram記憶體池 32位元組對齊 說明一次取出32位元組 效率高 align 32 u8 mem1base mem1 max size align 32 u8 mem2base mem2 max size attribute at 0x68000000 雖然起到管理記憶體的作用 但是同時也帶來了...
C C 記憶體管理 筆記
記憶體管理是個比較複雜的東西,我這裡記錄一些比較重要的筆記。0.永遠保持謙虛的態度來使用指標和操作記憶體。1.在用free釋放記憶體後,要記得將指標賦值為null,防止產生 野指標 2.盡量不要用指標指向常量字串。看乙個小例子 char p abcde p 0 m std cout 用gcc編譯會出...
Unity記憶體管理筆記
底層runtime全部有c 構成 中層為bonding層 注 不確定是不是這個單詞,就是乙個粘合層 以前使用unity自定義的語言,但是因為開發不方便,現在主要使用c 了,作用是將c 和c 連線在一起,大家用到的unity的api都是在這一層提供的,底層執行的還是c 這只是乙個warpper封裝 上...