懶加載,?又稱為延遲加載。說的通俗?一點,就是在開發中,當程序中需要
利?用的資源時。在程序啟動的時候不加載資源,只有在運?行當需要?一些資
源時,再去加載這些資源。
我們知道iOS設備的內存有限,如果在程序在啟動后就?一次性加載將來會
?用到的所有資源,那么就有可能會耗盡iOS設備的內存。這些資源例如?大量數據,圖?片,?音頻等等
下?面舉個例?子:
1>定義控件屬性,注意:屬性必須是strong的,?示例代碼如下:
@property (nonatomic, strong) NSArray *imageList;
2>在屬性的getter?方法中實現懶加載,?示例代碼如下:
//懶加載-在需要的時候,在實例化加載到內存中- (NSArray
*)imageList{//只有第?一次調?用getter?方法時,為空,此時實
例化并建?立數組if(_imageList ==nil) {//
File表?示從?文件的完整路徑加載?文件NSString *path =
[[NSBundle mainBundle] pathForResource:@"ImageData"ofType:@"plist"]; NSLog(@"%@", path);
_imageList=[NSArray
arrayWithContentsOfFile:path]; }return_imageList;}如上?面的代碼,有?一個_imageList屬性,如果在程序的代碼中,有多次訪
問_imageList屬性,例如下?面
self.imageList ;self.imageList ;self.imageList ;雖然訪問了3次_imageList屬性,但是當第?一次訪問了imageList屬相,imageList數組就不為空,
當第?二次訪問imageList時imageList != nil;程序就不會執?行下?面的代碼NSString *path = [[NSBundle mainBundle]
pathForResource:@"ImageData"ofType:@"plist"];
NSLog(@"%@", path); _imageList=
[NSArray arrayWithContentsOfFile:path];就不會再次在PList?文件中加載數據了。
懶加載的好處:
1>不必將創建對象的代碼全部寫在viewDidLoad?方法中,代碼的可讀性更
強
2>每個屬性的getter?方法中分別負責各?自的實例化處理,代碼彼此之間的
獨?立性強,松耦合3>只有當真正需要資源時,再去加載,節省了內存資源。
提醒:這是蘋果公司提倡的做法。其實蘋果公司做的IOS系統中很多地?方
都?用到了懶加載的?方式,?比如控制器的View的創建。