這篇文章主要介紹iOS如何實現(xiàn)懶加載,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)是一家成都網(wǎng)站建設、做網(wǎng)站,提供網(wǎng)頁設計,網(wǎng)站設計,網(wǎng)站制作,建網(wǎng)站,按需網(wǎng)站策劃,網(wǎng)站開發(fā)公司,2013年開創(chuàng)至今是互聯(lián)行業(yè)建設者,服務者。以提升客戶品牌價值為核心業(yè)務,全程參與項目的網(wǎng)站策劃設計制作,前端開發(fā),后臺程序制作以及后期項目運營并提出專業(yè)建議和思路。什么是懶加載
懶加載又稱為延遲加載,它是指系統(tǒng)不會在初始化是就加載某個對象,而是在第一次調用(使用 get 方法)時才加載這個對象到內存,簡單點兒說就是當對象被系統(tǒng)或者開發(fā)者需要用到的時候再去加載。它的實現(xiàn)方法實質上就是覆寫該對象的 get 方法,并將該對象在初始化時需要實現(xiàn)的代碼在 get 方法中實現(xiàn)。
使用懶加載的優(yōu)點
不需要在 viewDidLoad 中實例化對象,簡化代碼,使結構清晰易懂,增強代碼的可讀性
對象的實例化在getter方法中,對象各司其職,降低代碼耦合性
提升初始化加載速度,對系統(tǒng)的內存占用率會減小
減少內存占用
viewDidLoad正常加載代碼示例
就拿昨天的那個功能的實現(xiàn)中用到的數(shù)組來說吧,在viewDidLoad
中正常加載是這樣子的:
@interface ViewController ()@property (nonatomic, strong) NSArray *infoArr;//數(shù)組 @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self configData]; } - (void)configData { _infoArr = @[@{@"title":@"出團日期", @"routeName":@"線路名稱一", @"time":@"2015/11/21", @"num":@"20", @"price":@"124.0", @"code":@"DAGSDSASA"}, @{@"title":@"余位", @"routeName":@"線路名稱二", @"time":@"2015/11/21", @"num":@"34", @"price":@"234", @"code":@"TAGDFASFAF"}, @{@"title":@"價格", @"routeName":@"線路名稱三", @"time":@"2015/11/21", @"num":@"12", @"price":@"634", @"code":@"GHGASDAS"}, @{@"title":@"團代號", @"routeName":@"線路名稱四", @"time":@"2015/11/56", @"num":@"54", @"price":@"632", @"code":@"DAADSFAD"}]; }
從上面的代碼片段中很容易看出來,當控制器被加載完之后也就開始加載viewDidLoad中的內容了,假設這個_infoArr是在某些事件被觸發(fā)之后才會被調用,這時就沒有必要再控制器加載完就去加載這個數(shù)組數(shù)據(jù)了,如果事件不觸發(fā)就意味著_infoArr永遠不會被加載,這樣的話在viewDidLoad中把它加載了就顯得很多余了并且也是很耗內存的。
懶加載方法示例
- (NSArray *)infoArr { if (!_infoArr) { _infoArr = @[@{@"title":@"出團日期", @"routeName":@"線路名稱一", @"time":@"2015/11/21", @"num":@"20", @"price":@"124.0", @"code":@"DAGSDSASA"}, @{@"title":@"余位", @"routeName":@"線路名稱二", @"time":@"2015/11/21", @"num":@"34", @"price":@"234", @"code":@"TAGDFASFAF"}, @{@"title":@"價格", @"routeName":@"線路名稱三", @"time":@"2015/11/21", @"num":@"12", @"price":@"634", @"code":@"GHGASDAS"}, @{@"title":@"團代號", @"routeName":@"線路名稱四", @"time":@"2015/11/56", @"num":@"54", @"price":@"632", @"code":@"DAADSFAD"}]; } return _infoArr; }
像上面這種調用getter方法的加載方式就是懶加載了,這樣當需要用到_infoArr的時候,就會調用[self infoArr]方法(既是getter方法),此時系統(tǒng)會去調用getter方法,然后在getter方法中獲取數(shù)據(jù)的賦值,然后返回供使用(需要值得注意的地方就是在getter方法中不要使用self.infoArr, 因為self.infoArr會調用getter方法,造成死循環(huán))。
以上是“iOS如何實現(xiàn)懶加載”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)網(wǎng)站建設公司行業(yè)資訊頻道!
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。