app启动优化

启动分类:

1.冷启动: 从用户点击App图标开始到appDelegate didFinishLaunching方法执行完成为止。这是一次完整的启动过程。

2.热启动:App 在冷启动后用户将 App 退后台,在 App 的进程还在系统里的情况下,用户重新启动进入 App 的过程,这个过程做的事情非常少。

启动主要步骤:

  • T1:main()函数之前,即操作系统加载App可执行文件到内存,然后执行一系列的加载&链接等工作,最后执行至App的main()函数。

  • T2:main()函数之后,即从main()开始,到appDelegate的didFinishLaunchingWithOptions方法执行完毕。
    image

  • T3:当didFinishLaunchingWithOptions执行完成时,用户还没有看到App的主界面,也不能开始使用App。这个阶段会一般会首页渲染和数据请求后,用户才能真正看到主页面。

阅读更多

iOS性能优化

一、静态分析

Xcode 自带的静态分析工具 Analyze,通过静态语法分析能够找出在代码层面就能发现的内存泄露问题,还可以通过上下文分析出是否存在变量无用等问题。但是,Analyze 的功能还是有限,还是无法帮助我们在编写代码的阶段发现更多的问题。所以,这才诞生出了功能更全、定制化高、效率高的第三方静态检查工具。比如OCLint、Infer等

Analyze分析参考文章: Analyze静态分析

Infer静态分析工具使用: https://www.cnblogs.com/ZachRobin/p/11280499.html

阅读更多

VUE基础

Vue.js基础

Vue (读音类似于 view) 是一套用于构建用户界面的渐进式框架

Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合

指令

  • 本质就是自定义属性
  • Vue中指令都是以 v- 开头

内置指令

  • v-cloak

    • 防止页面加载时出现闪烁问题
  • v-text

    • v-text指令用于将数据填充到标签中,作用于插值表达式类似,但是没有闪动问题
    • 如果数据中有HTML标签会将html标签一并输出
    • 注意:此处为单向绑定,数据对象上的值改变,插值会发生变化;但是当插值发生变化并不会影响数据对象的值
  • v-html

    • 用法和v-text 相似 但是他可以将HTML片段填充到标签中

    • 可能有安全问题, 一般只在可信任内容上使用 v-html,永不用在用户提交的内容上

    • 它与v-text区别在于v-text输出的是纯文本,浏览器不会对其再进行html解析,但v-html会将其当html标签解析后输出。

阅读更多

iOS知识点整理

一、最佳实践

  • 在类的头文件中尽量少引用其他头文件;
  • 多用字面量语法,少用与之等价的方法;
  • 多用类型常量,少用#define预处理指令;
  • 用枚举表示状态、选项、状态码;
阅读更多

protobuf iOS使用

为什么使用protobuf

在不同平台通信的时候,首先需要将对象进行序列化。iOS平台上我们常用NSKeyedArchiver进行归档,当然也可以将数据处理为JSON或者XML格式。NSKeyedArchiver只能在iOS/Mac平台使用,因此它归档的二进制数据不适合于在不同平台之间使用。JSON和XML虽然由于容易维护,易读而应用比较广泛,但是对数据的利用效率都不是高。这时候该使用Protobuf了,因为Protobuf的优势是效率高,同样的一份数据使用protobuf存储的时候更小,更加方便

Protobuf是什么

Protobuf 即 google protocol buffer 是一种数据封装格式协议,是google推出的一种语言无关、平台无关、扩展性好的用于通信协议、数据存储的结构化数据串行化方法。

使用Protobuf大致分三步:

1.集成protoc工具
2.根据自己的需求创建proto文件并转换
3.向自己的项目集成protocbuf

阅读更多

iOS线上crash日志分析

因为线上统计用的百度sdk,现在记录下针对百度错误日志的手动分析方法,其官网文档有自动手动分析两种方法.

这里记录一下自己手动定位crash报错方法的流程:

百度移动统计iOS SDK获取的crash日志不是完整的系统生成日志,其内容主要包括异常类型、原因、Backtrace调用等.

SDK V3.5及以上的SDK,日志格式会在头部新增相关信息,如下:

1
2
3
4
UUID: 538572BD-D973-3D55-A475-4579BA0BECBF
NAME: BaiduMobStatSample
ARCH: x86_64
ADDR: 0x100000000

bug分析命令:**xcrun atos –arch arm64 -o +包路径 -l 基地址 + 偏移地址**

阅读更多

浅析ios中static和const的使用

一、static

修饰局部变量:

1、让局部变量只初始化一次

2、局部变量在程序中只生成一份内存

3、延长局部变量的生命周期,程序结束才会销毁。

修饰全局变量:

只能在本文件中访问,作用域仅限于当前文件

阅读更多

Xib及自定义控件封装

view的封装(自定义控件封装)

  • 如果一个view内部的子控件比较多,一般会考虑自定义一个view,把它内部子控件的创建屏蔽起来,不让外界关心

  • 外界可以传入对应的模型数据给view,view拿到模型数据后给内部的子控件设置对应的数据

  • 封装控件的基本步骤

阅读更多

iOS 预编译指令#if

OC中的预编译指令有三种功能1:宏定义 2条件编译 3文件包含

1、宏定义

1-1定义格式: #define 标识符 字符串

1、 不含参数: #define TAG_VIEW 10086

2、 含有参数:#define MAX_INT(a,b) a+b

阅读更多