1. 程式人生 > >[IOS 開發] UIImage類的物件兩種初始化方法的區別

[IOS 開發] UIImage類的物件兩種初始化方法的區別

1、imageNamed:

1 UIImage *image = [UIImage imageNamed:@"1"];

UIImage的類方法

  第一次讀取圖片的時候,先把這個圖片放到快取中,下次再使用這個名字的圖片時,直接從快取中讀取;如果快取中不存在這個名字的影象,則先把該圖片載入到快取中,再返回該物件。如果我們需要短時間內頻繁的載入一些一次性的影象,最好不要使用這種方法。

  優點:方便快捷,只有第一次使用的時候稍慢,接下來再使用就會稍微快點;

  缺點:如果在當前工程中只使用一次,就會浪費記憶體。

2、imageWithContentsOfFile:和initWithContentsOfFile:



1 // 獲取程式包中一個圖片資源的路徑
2     NSString *oldImagePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"];
3     // 根據路徑獲取圖片
4     UIImage *image1 = [UIImage imageWithContentsOfFile:oldImagePath];  // 類方法
5     UIImage *image2 = [[UIImage alloc] initWithContentsOfFile:oldImagePath];  // 物件方法

imageWithContentsOfFile:  -- UIImage的類方法

initWithContentsOfFile:  -- UIImage的物件方法

  每次都根據路徑去讀取圖片,不經過系統快取,直接從檔案系統中載入並返回。不會耗記憶體,如果載入的圖片在工程中只使用一次,應該選擇這個方法。當收到記憶體警告的時候,系統可能會將UIImage內部的儲存影象的記憶體釋放,下一次需要的時候重新載入。