關於記憶體管理思考方式的一些學習總結

2021-07-22 19:11:36 字數 1004 閱讀 4252

談到記憶體管理首先想到的是「引用計數」這個名稱,但真正正確客觀的去思考這個問題,應該先理解以下幾點:

下面我們看一下物件操作對應的**

物件方法

oc方法

生成並持有的物件

alloc/new/copy/mutablecopy等方法

持有的物件

retain方法

釋放物件

release方法

廢棄物件

dealloc方法

接下來看一下具體的各個專案

使用以下方法名開頭意味著自己生成的物件自己持有:

用上述方法以外的方法取得物件,因為非自己生成並持有,所以自己不是該物件的持有者。我們經常遇到的+(id)array方法便是

/*

*取得非自己生成並持有的物件

*/id array=[nsmutablearray array];

/* *取得的物件存在,但自己不持有物件

*/[array retain];

/* *自己持有物件

*/

自己持有的物件,一旦不在需要,持有者有義務釋放該物件,釋放通過release方法。

/*

*取得非自己生成並持有的物件

*/id array=[nsmutablearray array];

/* *取得的物件存在,但自己不持有物件

*/[array retain];

/* *自己持有物件

*/[array

release];

/* *釋放物件

*物件不可再被訪問

*/

這個就好理解了,對於通過alloc/new/copy/mutablecopy方法生成的物件,或是retain持有的物件,在不需要時就需要將其釋放。而由此以外所得的物件絕不能釋放。倘若在應用程式中釋放了非自己所持有的物件就會造成崩潰。

以上記憶體管理的思考方式是我在看書以及實踐中所得,有不全面和不細緻的地方,希望可以對看到的有所幫助。

關於專案管理的一些思考

好記憶不如爛筆頭 所以還是要記錄下來的。關於專案管理,作如下的簡要描述,可以給自己乙個明確的提示。it 行業,一般的專案分為七大模組,分別為 需求分析,概要設計,詳細設計,和單元測試,系統測試,安裝和移植,專案管理等,當然還可以細分為其他的模組,不過主要可以從這些方面來著手。可是很多時候,我們在專案...

關於英語學習的一些思考

怎麼樣,聽完有木有一種想把新概念背上100遍的衝動?至少我是有的。簡單的總結一下強浩老師所講的內容 一 英語學習弊端 貪多,對英語的學習只是走馬觀花,蜻蜓點水,淺嘗輒止。就圖乙個新鮮感,而不是深入 反覆地去學習同乙個資料。就那我們現在來說,新舊走遍美國 小烏龜 900句 365等等,各種英語學習資料...

關於深度學習的一些思考

問1 有監督學習中,機器學習是什麼?答1 機器學習就是先假設乙個函式,使用訓練樣本來選取最優的引數 當有新樣本時,把特徵輸入已訓練好的函式中,得到 值。問2 神經網路中,神經元的作用是什麼?答2 1 對輸入特徵進行線性加權 z w1 a1 w2 a2 w3 a3 b,其中wi是權重,ai是特徵值,b...