我在IOS遇到过的闪退主要分为程序启动完Lanch page在初始化页面就崩溃,和在程序运行中crash两种;
后者我遇到的情况是memory占用过多,被系统kill掉了一部分正在占用的内存,导致程序运行出错,而crash;这种情况主要是通过分析memory allocation,解决memory issues;
分析memory和time profile在IOS中常用Instruments来帮助分析memory allocation和memory leak;通过连线测试app运行过程中某个行为(两个时间点之间)处理过程中的内存分布,将已经不需要还被其他类reference没释放的资源释放掉,我在做图像处理相关的app开发时,属于对memory占用敏感,遇到过的一个实际问题就是我们在UI层swift和实际处理的c++程序之间的接口层申请了一部分内存,这部分内存在c++处理完之后将结果返回UI层之后才不用了,这时候还是被引用的,所以并不是leak,我们想释放他,确已经lose track了,导致的结果是app每次重新load图片处理一次内存都不断上涨,确没有leak,最终当处理memory peak达到300M