iOS開發進階(唐巧)讀書筆記(一)

来源:https://www.cnblogs.com/gfxxbk/archive/2019/10/10/11646802.html
-Advertisement-
Play Games

如何提高iOS開發技能 1、閱讀博客: "https://github.com/tangqiaoboy/iOSBlogCN" 40多位iOS開發博主的博客地址 2、讀書:每年閱讀一本高質量的iOS開發書籍 3、看WWDC視頻 4、看蘋果的官方文檔 5、看開源項目的代碼 6、多寫代碼,多思考 7、多和 ...


如何提高iOS開發技能

1、閱讀博客:https://github.com/tangqiaoboy/iOSBlogCN 40多位iOS開發博主的博客地址
2、讀書:每年閱讀一本高質量的iOS開發書籍
3、看WWDC視頻
4、看蘋果的官方文檔
5、看開源項目的代碼
6、多寫代碼,多思考
7、多和同行進行交流
8、分享

第一部分:iOS開發工具

1、Reveal界面調試工具

1、虛擬機集成
2、真機集成(iOS開發進階P47)

vim ~/.lldbinit
command alias reveal_load_sim expr (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2);
command alias reveal_load_dev expr (void*)dlopen([(NSString*)[(NSBundle*)[NSBundle mainBundle]               pathForResource:@"libReveal" ofType:@"dylib"] cStringUsingEncoding:0x4], 0x2);
command alias reveal_start expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter]           postNotificationName:@"IBARevealRequestStart" object:nil];
command alias reveal_stop expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter]            postNotificationName:@"IBARevealRequestStop" object:nil];

2、移動統計工具

國外:Flurry(不會被牆)
國內:友盟

3、crash統計工具

Crashlytics
Bugly(騰訊)

4、App Store統計工具

App Annie

第二部分:iOS開發實踐

1、CoreFoundation對象的記憶體管理

  • CFStringRef
CFStringCreateWithCString(kCFAllocatorDefault, “Hello World”, kCFStringEncodingUTF8)
  • CF對象轉換成OC對象

    1. __bridge:只做類型轉換,不修改相關對象的引用計數,原來的CF對象在不用時,需要調用CFRelease方法
    2. __bridge_retained:類型轉換後,將相關對象的引用計數加1,原來的CF對象在不用時,需要調用CFRelease方法
    3. __bridge_transfer:類型轉換後,將對象的引用計數交給ARC管理,CF對象在不用時,不在需要調用CFRelease方法

2、GCD

  • 執行一次
    dispatch_once 代碼提示
  • 延遲執行
    dispatch_after 代碼提示
  • 自定義queue
dispatch_queue_t urls_queue = dispatch_queue_create(“blog.devzhang.com”, NULL);
dispatch_async(urls_queue, ^{

});
dispatch_release(urls_queue);
  • 多線程處理,最後彙總結果(具體使用?)
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
    // 並行執行的線程一
});
dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
    // 並行執行的線程二
});
dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{
    // 彙總結果
});

1、NSJSONSerializationNSKeyArchiver 更好

在選擇持久化方案時,系統提供的 NSJSONSerializationNSKeyArchiver 在效率和體積上都更好。
NSJSONSerializationNSKeyArchiver 快了7倍,體積小了一半
網上有詳細的測試:https://github.com/randomsequence/NSSerialisationTests

2、慎用Block

block容易產生迴圈引用問題
從架構層面來看,如果在使用 block 時需要時刻註意避免迴圈引用問題。那麼還不如不使用 block。用 delegate 來實現要安全的多

註意:類方法絕不會產生迴圈引用!

3、忽略編譯警告⚠️

https://blog.csdn.net/denggun12345/article/details/83586790


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

-Advertisement-
Play Games
更多相關文章
  • 做了那麼多年的開發第一次寫博客,一開始是沒想過要寫博客的,後來想寫,卻一直不敢寫,一個是怕自己寫的不好,誤導人家,二來是不太自信。現在想起寫博客是因為,真正的勇士敢於面臨淋漓的鮮血,希望能提高自己,也是做個記錄自己不容易忘記,如果有哪裡寫的不好的,希望各位海涵,給出意見與批評,讓我更上一層樓。謝謝。 ...
  • 此題,竟然一時間沒想到如何合理的解決方案,主要是有較長的時間沒有使用 與`NOT IN`. 也是一個手熟的活,需要經常鍛煉,以下是解題答案: ...
  • 以前使用 ,都是局限於單個數值使用,從未嘗試過多個數據使用 . 此題涉及兩個表,肯定需要使用 操作. 此外,需要選取每個 的最大數值,那麼肯定涉及 以及 操作. 綜合以上因素,答案如下所示: ...
  • 1、增加列 2、刪除列 3、修改欄位類型 4、重命名列: 5、重命名錶: 當修改表結構時,sql server會彈出對話框,顯示以下內容: 不允許保存更改。您所做的更改要求刪除並重新創建以下表。您對無法重新創建的表進行了更改或者啟用了“阻止保存要求重新創建表的更改”選項。 解決方案:菜單欄->工具- ...
  • 1. SQL語言包括哪些類型? 數據定義:Create Table,Alter Table,Drop Table, Craete/Drop Index 數據操縱:Select ,insert,update,delete 數據控制:grant,revoke 2. 內聯接,外聯接區別? 內連接是保證兩個 ...
  • 1、如果你使用root用戶進行安裝。 vi /etc/profile 即可 系統變數 2、如果你使用普通用戶進行安裝。 vi ~/.bashrc 用戶變數 export HADOOP_HOME=/export/servers/hadoop-2.8.5 export PATH=$PATH:$HADOO ...
  • 原本是想在酷安上架的,然而審核不通過。。只能通過網頁方式宣傳了 一款使用Jsoup開源庫網路爬蟲的APP,將線上閱讀的小說解析,把小說全本下載為txt文件 由於使用爬蟲技術,所以下載的速度不是很理想,後期可能還得優化優化 下載保存的路徑: 內置sd卡/星之小說下載器 PS:最近吃土了,覺得有用的,捐 ...
  • 試圖更改私有視圖的佈局邊距時出現錯誤 解決方案: ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...