1. 程式人生 > >ios開發-懶載入和模型的封裝

ios開發-懶載入和模型的封裝

一. ios開發中的懶載入

什麼是懶載入:

就是在需要資料的時候,再去載入資料,可以理解為延遲載入.

OC中懶載入的形式

首先在控制器中宣告一個數組
    @property (nonatomic, strong) NSArray *shopsArray;
在這個陣列的get方法中進行懶載入設定
    - (NSArray *)shopsArray
    {
        // 主要是這個if的控制, 確保只加載一次  
        if (_shopsArray == nil) {

           // 在這裡面進行模型資料的載入

        }
        return
_shopsArray; }

二. ios開發中模型的設計

根據MVC設計模式, 可以將資料轉成模型資料, 在呼叫的時候直接通過點語法呼叫, 防止了人為手寫程式碼會出現錯誤的情況.
模型繼承自NSObject, .h檔案裡面宣告的屬性通常是與資料中名字相同的屬性, 如:
    @property (nonatomic, copy) NSString *icon;
    @property (nonatomic, copy) NSString *name;
    並且, 在這裡宣告兩個方法, 提供給外界, 呼叫方法後直接返回模型資料:
    // 提供兩個方法, 下面的方法中, 第一個是物件方法, 第二個是類方法.
- (instancetype)initWithDict:(NSDictionary *)dict; + (instancetype)shopWithDict:(NSDictionary *)dict; 然後, 在.m檔案中, 對這些方法進行實現: - (instancetype)initWithDict:(NSDictionary *)dict { if (self = [super init]) { [self setValuesForKeysWithDictionary:dict]; // oc中得KVC使用
} return self; } + (instancetype)shopWithDict:(NSDictionary *)dict { return [[self alloc] initWithDict:dict]; } 注意要呼叫父類的init方法進行初始化.

三. 懶載入重寫程式碼

說了懶載入和模型的原理, 到此, 就可以通過懶載入欄載入模型資料了, 具體程式碼如下:
    #pragma mark - 懶載入
- (NSArray *)shopsArray
{
    if (_shopsArray == nil) {
        // 1. 從安裝目錄中載入資料到陣列中
        NSArray *dictArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"shops" ofType:@"plist"]];
        // 2. 建立一個可變陣列, 用來存放模型資料
        NSMutableArray *tmpArray = [NSMutableArray array];
        // 3. 遍歷陣列, 將模型新增到可變陣列中
        for (NSDictionary *dict in dictArray) {
            JXShop *model = [JXShop shopWithDict:dict];
            [tmpArray addObject:model];
        }
        // 4. 進行陣列賦值
        _shopsArray = tmpArray;
    }
    // 5. 返回一個模型陣列
    return _shopsArray;
}

總結:

懶載入和模型的設計是ios開發中常用的方法, 必須熟記哈!