iOS 經驗分享

       

一. 開發工具

1. CocoaPods 

     CocoaPods是項目依賴管理工具--提供第三方開源庫的管理。如:css

  1. 不須要對某些開源庫設置特殊編譯參數-fno-objc-arc。
  2. 不須要手動添加相對應系統依賴庫framework.
  3. 方便開源庫的更新

1.1  安裝CocoaPodshtml

       在終端運行下面命令:git

  • sudo gem install cocoapods
  • pod  setup
        若是你的gem太老了,能夠升級gem:  sudo gem update -- system      

        另外mac自帶的ruby的軟件源rubygems.org由於使用亞馬遜的雲服務,因此被屏蔽了,須要更新一下ruby的源,以下:github

  • gem sources --remove https://rubygems.org/
  • gem sources -a http://ruby.taobao.org/
  • gem sources -l
1.2 使用CocoaPods

       使用CocoaPods只須要把用到的第三方開源庫放到項目目錄下的Podfile文件中,即:web


而後在終端cd 到項目目錄下,再執行 pod install 安裝就能夠了。每次更改了Podfile文件,都須要從新執行一次pod update命名(若是遇到項目衝突,可使用:pod update --verbose --no-repo-update)正則表達式


2. 網絡封包分析工具Charles

2.1 Charles 主要功能編程

  1. 支持SSL代理。能夠截取分析SSL的請求。(SSL--有相關證書加密的連接).
  2. 支持流量控制。能夠模擬慢速網絡,以及等待時間較長的請求。
  3. 支持AJAX調試。能夠自動將jsons或者xml數據格式化,方便查看。
  4. 支持AMF調試,能夠將Flash Remoting或Flex Remoting信息格式化,方便查看。
  5. 支持重發網絡請求,方便後端調試。
  6. 支持修改網絡請求參數。
  7. 支持網絡請求的截取和動態修改。
  8. 檢查HTML、CSS和RSS內容是否符合W3C標準(validator.w3.org/).
2.2 charles 功能解析

    傳送門:關於charles 對於app開發的具體功能操做 --唐巧博客。json


3.馬克鰻(Mark man 傳送門:www.getmarkman.com) 

     是一款免費標註的工具,使用它能夠方便地輸出設計圖稿上的元素的大小、顏色、邊距、說明等。以下圖:後端

        


二. 開發實踐

1. UIWebView或WKWebView(iOS8.0)的混合編程

    基於WebView的混合編程是同時使用原生的控件和WebView來展示應用界面的。ruby

1.1 何時應該用webView?

  1. 排版複雜。包括圖文混排,連接支持點擊。
  2. 界面的變化需求頻繁
  3. 界面對用戶的交互需求不復雜

2. 混合編程模塊渲染引擎

        在實際開發中,webView控件接受一個HTML內容,用於呈現相應的界面。

   2.1 方法一:[NSString stringWithFormat:]     <img scr=http::////////> <strong>    wwwww </strong> <p sssdsdsd>  </p>

  1. NSString *webContent = [NSString stringWithFormat:@"<html><head></head><body>%@</body></html>",webContent];  baseURL:nil];複製代碼
  2. [_webView loadHTMLString:webContent];複製代碼
         若是用方法一單純展現一些內容,直接加載具備標籤html內容(如商品詳情)和無用戶交互是能夠的。從上面能夠看出,這樣寫不方便擴展:
  • 模糊內容和代碼混在一塊兒,不方便閱讀,也不方便更改。
  • 模板的渲染邏輯使用簡單的[NSString stringWithFormat:]來完成,功能單一(表如今數據的二次處理)。
    2.2 方法二:模塊渲染引擎

     2.2.1 MGTemplateEngine(傳送門:mattgemmell.com/mgtemplatee…),它的模塊渲染引擎比較重量級,能夠自定義Filter。它須要依賴RegexKit,RegexKit是一個正在正則表達式工具類,提供強大的正則表達式匹配和替換功能。

     2.2.2 GRMustache渲染因輕量級,匹配和替換規則是做者提供。(傳送門:下載地址

  • 把GRMustache 接入項目,建議用pod。
  • 建立html,css,js對應文件。填寫各文件功能。
        下面舉個簡單例子:

建立文件名爲test.html 

<html> 
 <head> 
css--->%@
  </head> 
 <body>
 <h1>
  {{ title }}
  </h1> 
 <p>
  {{ content }}
  </p>
js->%@
  </body> 
  </html>複製代碼

        而後再代碼中把該文件讀取到內存中,在使用GRMustache的renderObject方法生成渲染後的HTML內容。上代碼:

NSURL *urlPath = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"html"];
NSString *html = [NSString stringWithContentsOfURL:urlPath encoding:NSUTF8StringEncoding error:nil];

NSDictionary *renderObject = @{@"title":@"我是標題",@"content":@"我是內容"};
NSString *content = [GRMustacheTemplate renderObject:renderObject fromString:html error: nil];

[_webView loadHTMLString:content baseURL:nil];
複製代碼

      這樣,咱們使用GRMustache模塊引擎成功完成了HTML內容渲染工做。

       注:renderObject的key必須和html設置的值一一對應。


三. 開發技巧

3.1 刪除未使用的圖片

       app通過屢次迭代,會殘留一些被更換了的圖片。如何知道本身的工程有哪些圖片資源未被使用的呢?提供一個小工具,

連接地址:jeffhodnett-Unused 或者 LSUnusedResourcesgithub連接

下載完成後運行工程跟着操做便可。

3.2 打包ipa包

       按照Xcode文檔正常的操做打包是很是慢的,爲了提供效率我提供2個方法。這2個方法的原理是同樣的。

  • 項目裏面的全部斷點去掉,command+B 編譯程序
  • 建立一個名爲Payload文件
  • 找到項目目錄Pruducts->xxx.app (show in finder) 把該目錄下的程序拷貝到Payload文件裏面,壓縮文件夾,更改後綴名爲ipa。

另外一個方法是有腳本進行打包。用sublime工具建立build_app.sh文件

mkdir ${appName}         
mkdir ${appName}/Payload
cp -r ${appName}.app ${appName}/Payload/${appName}.app
cp Icon.png ${appName}/iTunesArtwork
cd ${appName}
zip -r ${appName}.ipa Payload iTunesArtwork
ipaName=Gemall_${version}_${environmental}_`date +20%y%m%d`_01.ipa
mv $project_path/${appName}/${appName}.ipa  $project_path/${ipaName}
rm -rf $project_path/${appName}
exit 0

##
#appName 項目名字
#version 版本號
#environment 接口環境
#project_path 項目的絕對路徑
複製代碼

 在終端運行 sh build_app.sh便可打包。

3.3 修復線上不知名奔潰

3.3.1 奔潰Application received signal SIGABRT

原理:在 Xcode 8 中,當你資源文件中[含有16位圖]或者[圖片顯示模式γ值爲'P3']且iOS targets設定爲iOS 9.3如下就會出現這個問題. 若是你的app須要支持廣色域顯示的話,那你必須得把target設置成iOS 9.3+,相反,若是你的app不須要支持廣色域且你想兼容 iOS 9.3 以前的項目,你就得把全部的16位的或者顯示模式爲'P3'圖片全都替換成8位模式的SRGB顏色的圖片。複製代碼
步驟:
  1. 找到項目目錄Pruducts->xxx.app (show in finder) 
  2. 在終端cd .../your.app
  3. find . -name 'Assets.car'
  4. sudo xcrun --sdk iphoneos assetutil --info Assets.car > /tmp/Assets.json
  5. open /tmp/Assets.json

  打開assets.json並查找包含有 「DisplayGamut" : 「P3」 或者相關的內容.若是有,叫UI從新切一份。

四.開發分享

關於iOS 性能優化梳理: 基本工具、業務優化、內存優化、卡頓優化、佈局優化、電量優化、 安裝包瘦身、啓動優化、網絡優化等---分享鏈接

相關文章
相關標籤/搜索