懶載入

来源:http://www.cnblogs.com/evening015/archive/2016/04/20/5415043.html
-Advertisement-
Play Games

懶載入的定義: 所謂的懶載入可以定義為: 延時載入,即當對象需要用到的時候再去載入。其實就是所謂的重寫對象的get方法, 當系統或者開發者調用對象的get方法時,再去載入對象。 懶載入的優點: 1.不需將對象的實例化寫到viewDidLoad,可以簡化代碼,增強代碼的可讀性 2.對象的實例化在get ...


懶載入的定義:
 
      所謂的懶載入可以定義為:
         延時載入,即當對象需要用到的時候再去載入。其實就是所謂的重寫對象的get方法,
         當系統或者開發者調用對象的get方法時,再去載入對象。
 
   懶載入的優點:
 
      1.不需將對象的實例化寫到viewDidLoad,可以簡化代碼,增強代碼的可讀性
 
      2.對象的實例化在getter方法中,各司其職,降低耦合性
 
      3.對系統的記憶體占用率會減小,只有當真正需要資源時,再去載入,節省了記憶體資源

   使用懶載入註意事項:
 
      1.重寫get方法時,先判斷對象當前是否為空,為空的話再去實例化對象
 
      2.需要註意在getter方法里切勿使用self.shopData,因為self.shopData會調用getter方法,造成死迴圈
 
   什麼時候使用懶載入:
 
     1.為什麼要使用懶載入:
      
          (1)這是蘋果公司提倡的做法,其實蘋果公司做的IOS系統中很多地方都用到了懶載入的方式,比如控制器的View的創建。
 
          (2)我們知道iOS設備的記憶體有限,如果在程式在啟動後就一次性載入將來會用到的所有資源,那麼就有可能會耗盡iOS設備的記憶體。這些資源例如大量數據,圖片,音頻等等,所以我們在使用懶載入的時候一定要註意先判斷是否已經有了,如果沒有那麼再去進行實例化
 
     2.什麼時候使用:
         不是所有getter都需要寫成懶載入的。有些時候很確定那些實例變數需要在某個地方初始化,那就不需要重寫getter
        了。大量的重寫getter會造成大量的版面浪費,而且增加很多輸入量。舉個例子,控制器的viewDidLoad後所有佈局和
        視圖都需要初始化好,那麼可以將這些控制項都放到一個獨立的方法里初始化和佈局,並不需要單獨寫getter。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 安卓為驗證碼倒計時提供了一個很方便的類android.os.CountDownTimer 其使用方法:new CountDownTimer(30000, 1000) { public void onTick(long millisUntilFinished) { mTextField.setText... ...
  • 一,效果圖。 二,代碼。 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. [self initTimerCompare]; } #pragma -mark -f ...
  • android.app.Notification android.app.Notification.Builder Notification,俗稱通知,是一種具有全局效果的通知,它展示在屏幕的頂端,首先會表現為一個圖標的形式,當用戶向下滑動的時候,展示出通知具體的內容。 NotificationMa ...
  • 1、NSDate的基本用法: //只要通過NSDate創建時間對象,對象中就保存了當前時間 NSDate *time = [NSDate date]; NSLog(@"date = %@",time); 輸出的結果為: date = 2016-04-21 00:11:14 +0000 最後的+000 ...
  • 由於初用mac,mac上面的快捷鍵都是以符號的形式出現,總是記不住,現記錄如下。mac上的符號根按鍵的對應關係如下圖所示: 我用的Xcode版本號是Version 6.1.1 (6A2008a) 1.斷點:command+\ 2.編譯程式:command + b 3.運行程式:command + r ...
  • Ctrl+1 快速修複(最經典的快捷鍵,一定要會) Ctrl+D: 刪除當前行 Ctrl+Alt+↓ 複製當前行到下一行(複製增加)Ctrl+Alt+↑ 複製當前行到上一行(複製增加)Alt+↓ 當前行和下麵一行交互位置Alt+↑ 當前行和上面一行交互位置Alt+← 前一個編輯的頁面Alt+→ 下一 ...
  • ...
  • Do平臺的應用升級包含二種升級方式,一種是最常用的安裝包的升級,另外一種是應用內升級。很顯然第二種升級方式更靈活。 應用安裝包升級 原生應用通常的升級方式就是這種,比如android的安裝包是apk文件,ios的安裝包是ipa文件。如果要升級,只能重新下載一個新的apk/ipa文件,然後安裝覆蓋舊的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...