談到記憶體管理首先想到的是「引用計數」這個名稱,但真正正確客觀的去思考這個問題,應該先理解以下幾點:
下面我們看一下物件操作對應的**
物件方法
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...