iOS 经验分享

       

一. 开发工具

1. CocoaPods 

     CocoaPods是项目依赖管理工具--提供第三方开源库的管理。如:

  1. 不需要对某些开源库设置特殊编译参数-fno-objc-arc。
  2. 不需要手动添加相对应系统依赖库framework.
  3. 方便开源库的更新

1.1  安装CocoaPods

       在终端运行下面命令:

  • sudo gem install cocoapods
  • pod  setup
        如果你的gem太老了,可以升级gem:  sudo gem update -- system      

        另外mac自带的ruby的软件源rubygems.org因为使用亚马逊的云服务,所以被屏蔽了,需要更新一下ruby的源,如下:

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

       使用CocoaPods只需要把用到的第三方开源库放到项目目录下的Podfile文件中,即:


然后在终端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开发的具体功能操作 --唐巧博客。


3.马克鳗(Mark man 传送门:www.getmarkman.com) 

     是一款免费标注的工具,使用它可以方便地输出设计图稿上的元素的大小、颜色、边距、说明等。如下图:

        


二. 开发实践

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

    基于WebView的混合编程是同时使用原生的控件和WebView来展现应用界面的。

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







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值