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 性能优化梳理: 基本工具、业务优化、内存优化、卡顿优化、布局优化、电量优化、 安装包瘦身、启动优化、网络优化等---分享链接

相关文章
相关标签/搜索