用uiimage載入影象的方法很多,最常用的是下面兩種:
1、用imagenamed函式
[uiimage imagenamed:imagename];
2、用nsdata的方式載入,例如:
1. nsstring *filepath = [[nsbundle mainbundle] pathforresource:filename oftype:extension];
2. nsdata *image = [nsdata datawithcontentsoffile:filepath];
3. [uiimage imagewithdata:image];
由於第一種方式要寫的**比較少,可能比較多人利用imagenamed的方式載入影象。其實這兩種載入方式都有各自的特點。
1)用imagenamed的方式載入時,系統會把影象cache到記憶體。如果影象比較大,或者影象比較多,用這種方式會消耗很大的記憶體,而且釋放影象的記憶體是一件相對來說比較麻煩的事情。例如:如果利用imagenamed的方式載入影象到乙個動態陣列nsmutablearray,然後將將陣列賦予乙個uiview的物件的animationimages進行逐幀動畫,那麼這將會很有可能造成記憶體洩露。並且釋放影象所佔據的記憶體也不會那麼簡單。但是利用imagenamed載入影象也有自己的優勢。對於同乙個影象系統只會把它cache到記憶體一次,這對於影象的重複利用是非常有優勢的。例如:你需要在乙個tableview裡重複載入同樣乙個圖示,那麼用imagenamed載入影象,系統會把那個圖示cache到記憶體,在table裡每次利用那個影象的時候,只會把指標指向同一塊記憶體。這種情況使用imagenamed載入影象就會變得非常有效。
無論用哪種方式載入影象,影象使用結束後,一定要記得顯示釋放記憶體。
+ (uiimage *)imagenamed:(nsstring *)name導致的記憶體問題
UIImage應用與記憶體管理
用uiimage載入影象的方法很多,最常用的是下面兩種 1 用imagenamed函式 uiimage imagenamed imagename 2 用nsdata的方式載入,例如 1.nsstring filepath nsbundle mainbundle pathforresource fil...
iPhone開發之UIImage應用與記憶體管理
用uiimage載入影象的方法很多,最常用的是下面兩種 1 用imagenamed函式 uiimage imagenamed imagename 2 用nsdata的方式載入,例如 1.nsstring filepath nsbundle mainbundle pathforresource fil...
應用程式與系統記憶體管理
1 虛擬記憶體管理器 windows提供了虛擬記憶體管理器,管理物理記憶體與硬碟之間的資料交換,以讓應用程式執行時,只有必須的 段和資料段進入物理記憶體,提高物理記憶體使用效率,並為並行程式提供執行環境。理論上win32虛擬記憶體管理器為每個win32程序提供私有4gb大小的線性虛擬位址空間,按頁來...