[IOS 開發] UIImage類的物件兩種初始化方法的區別
阿新 • • 發佈:2019-02-15
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內部的儲存影象的記憶體釋放,下一次需要的時候重新載入。