美文网首页
iOS 项目维护阶段的优化之路

iOS 项目维护阶段的优化之路

作者: samtake | 来源:发表于2019-08-13 16:35 被阅读0次

思考🤔在项目上线需求稳定之后,如何给app做进一步的优化?可以从下面几点入手:

  • Instruments
  • 静态分析
  • 包大小优化
  • 电能消耗
  • 卡顿监控
  • Bugly
  • 内存
  • 启动优化

Instruments

Instruments是Xcode自带的性能监控工具,它的功能非常强大。

Instruments可以做的事.png

下面我们就按照官方文档,一步步学习如何使用, 这里有个wwdc2018的视频教程https://developer.apple.com/videos/play/wwdc2018/410,纯英文没字幕,结合文档多看几遍吧,我是用iina打开的。

首先创建Instruments工程

  • In Xcode, choose File > New > Project.
  • In the sheet that appears, select macOS.
  • Under Other, select Instruments Package, then click Next.


    image.png

接着对Instruments-demo.instrpkg文件进行配置

  • 通过os_log_create(…)创建日志句柄
  • 标记一个你想计时或想知道何时开始和结束的函数或代码块:以os_signpost_interval_begin(…)开始,以os_signpost_interval_end(…)结束,⚠️它们是成对出现的
  • 以及好多好多,文档里都有做了详细的说明
<import-schema>tick</import-schema>
    <instrument>
        <id>com.gs2000eHappy</id><!-- MARK: 填写一个bundle id -->
        <title>Ticks</title>
        <category>Behavior</category>
        <purpose>Instrument drawing ticks every 10ms</purpose>
        <icon>Generic</icon>
        
        <create-table>
            <id>tick-table</id>
            <schema-ref>tick</schema-ref>
        </create-table>
        
        
        
        <!-- Define graph to draw for your Instrument (optional) -->
        <graph>
            <title>Ticks</title>
            <lane>
                <title>Ticks</title>
                <table-ref>tick-table</table-ref>
                
                <!-- plot, plot-template or histogram elements -->
                <plot>
                    <value-from>time</value-from>
                </plot>
            </lane>
        </graph>
        
        <!-- Define at least one detail view for your Instrument -->
        <list>
            <title>Ticks</title>
            <table-ref>tick-table</table-ref>
            <column>time</column>
        </list>
    </instrument>

build 弹出以下界面,说明编译通过


image.png

依次点击Instrument-Preference-Package,就可以看到刚才编写的自定义 Instruments 工具

image.png

如何使用这个自定义的 Instruments 工具呢?
打开Xcode自带的Instrument,选择要测试的模块,我这里选择了Leaks,点击+号搜索出刚才定义的工具,并拖拉到track filter


image.png

选择要测试的软件,点击⭕️开始


image.png

接着就是要学习如何看这个图形界面了

Leak

新建一个MRC项目工程用于测试


image.png

按照前面提到的进行Leak测试,如下图,其中红色打叉就是内存泄漏的地方


image.png

然后我们可以通过光标,选定某个段缩小范围来查找内存泄漏的地方,从图中我们可以很好的定位到内存泄漏的代码片段,从而入手解决


image.png

也就是该部分代码

- (IBAction)buttonClick:(id)sender {
    dog * dg = [[dog alloc]init];
    [dg retain];
}
Time Profiler
image.png image.png

静态分析

静态分析内存泄漏及代码逻辑错误,除了Xcode自带的Analyze外还有OCLint、infer、Clang

  • Analyze 依次点击Xcode-Product-Analyze,蓝色箭头即为出现问题部分,编译器也会给出对应的错误提示。


    image.png
  • The 'viewDidAppear:' instance method in UIViewController subclass 'WGOrderTableViewController' is missing a [super viewDidAppear:] cal 系统方法没有调用父类

  • Value stored to 'shopH' during its initialization is never read 变量赋值了缺没有使用过

  • Returning 'self' while it is not set to the result of '[(super or self) init...]'
    stackoverflow参考链接
    例如

-(instancetype)initWithFrame:(CGRect)frame{
    if (self==[super initWithFrame:frame]) {
        [self setupUI];
    }
    return self;
}

解决

-(instancetype)initWithFrame:(CGRect)frame{
    if ((self=[super initWithFrame:frame])!=nil) {
        [self setupUI];
    }
    return self;
}

包大小优化

电能消耗

卡顿监控

Bugly

内存

启动优化

文章中用到的demo链接🔗

相关文章

  • iOS 项目维护阶段的优化之路

    思考?在项目上线需求稳定之后,如何给app做进一步的优化?可以从下面几点入手: Instruments 静态分析 ...

  • iOS 如何优化项目

    iOS 如何优化项目 iOS 如何优化项目

  • iOS 2019年4月学习记录

    iOS网络优化 1 优化项目 DNS客户端维护DNS映射表1)定时向服务端获取跟新2)上报无效ip3)保留替补映射...

  • Tenorshare iCareFone for Mac(ios

    Tenorshare iCareFone for Mac是一款macOS平台的ios设备优化维护工具,Tenors...

  • ios - 收藏集 - 掘金

    天弘基金移动 App 客户端架构优化之路 - iOS - 掘金天弘基金移动App客户端架构优化之路 随着移动互联网...

  • iOS性能优化篇小结(一)

    iOS性能优化篇小结(二) 随着公司项目逐渐的稳定,前段时间在项目中引入了一个性能检测的工具,同时 iOS性能优化...

  • iOS学习技术栈

    iOS学习需要掌握的技术点,以及项目性能优化

  • 应用架构文章

    Service Oriented 的 iOS 应用架构 新浪微博iOS客户端架构与优化之路 糯米移动组件架构演进之...

  • Tenorshare iCareFone for mac(苹果手

    tenorshare icarefonemac中文版是Mac os系统上一款iOS设备优化维护工具,iCareFo...

  • 谈项目构建与维护

    谈项目构建与维护 多去周边的世界看看。 -----Yee 链接 Yee的博客:谈项目构建与维护 第一阶段 禁止使...

网友评论

      本文标题:iOS 项目维护阶段的优化之路

      本文链接:https://www.haomeiwen.com/subject/kvumjctx.html