内存检测和离屏渲染的优化

  内存检查

        在检测内存之前,我们需要知道ios内存检测工具,常见的有:Instruments的Leaks、Build And Analyze、Memory Graph、MLeaksFinder等。

      Build And Analyze:这种检测方法操作比较简单:只需要打开项目工程,选择Product→Analyze 或者快捷键command +  shift + B 即可。检测一会儿就会出现如下图一:



图一

这种分析内存的方法,速度快,不运行代码,分析代码的结构,我们在项目上线前可以简单的处理代码问题

        1 Dead Stroe:代码书写问题,一般会报错如下警告

        Value stored to 'xxx' during its initialization is never read(字面理解是初始化对象xxx无法在程序读取) 这个警告出现的原因有好多情况:如初始化了对象,但是没有使用,对象没有初始化,就开始使用 初始化了两次等等

图示二



图示三
图示四

        解决办法: 对于图示二 图示三 这类问题,一直存在工程中,宝宝也是大吃一惊,后来才知,工程维护的人多,哈哈哈 这就没办法了  图示四:是我常犯的错误,结构体或者对象没有初始化(startPt) ,就开始使用了;修改如下 CGPoint startPt = CGPointZero

2 Core Foundction/Obeject-C

      这个问题,很容易被开发者忽略,没有遵循oc语音的特性,就随性上代码,也是笔者所犯的错误,废话少说,有图有证据!

图2-1

        OC所写的代码都是基本是继承与NSObject 的,所以有时候需要用super 去调用父类的方法,只有父类知道怎么去执行,子类要想实现 必须先调用父类的方法!  血泪啊 !


3 Apple Misuse(Apple)

      这类问题,是非常危险的!笔者的理解是,就是潜在的死循环的始作俑者,一旦上线崩溃,脸上会挂不住的!比如:


图3-1b

不可变字典对象(dict)value值不能为空,如果在某种情况下value = nil,程序直接崩溃,修复方式有两种方式:

第一种: 将快速定义不可变字典的({})方式改为:可变字典处理即可.

第二种:利用异常处理(Java中用比较多)方式,如下:

@try {

<#Code that can potentially throw an exception#>

} @catch (NSException *exception) {

<#Handle an exception thrown in the @try block#>

} @finally {

<#Code that gets executed whether or not an exception is thrown#>;

@try {

//插码需求,我的设置

NSDictionary *dict = @{@"WT.mobile":[UserLoginHelper sha

redInstance].userId,

@"WT.es":@"我的移动",

@"WT.event":item.title};

[WebtrendHelper sendEventWithActionAtPath:@"/wdyd" Description:@"wdyd" eventType:@"click" setCustomParameters:dict];

} @catch (NSException *exception) {

// 异常处理

} @finally {

}

4 Memory(Core Foundction/Obeject-C)

        通常会有这样的警告:potential leak of an object stored into XXX 意思是潜在的内存泄露,我们有时候用某个客户端,忽然之间消失了,打开又好了,笔者所遇到项目中,就有这类问题,测试发现,这类问题大多数是内存泄露引起的,不过因笔者的水平有限,单单用Build And Analyze分析是无法找到这些问题病根的;所写的代码在32位的操作系统上有卡死不动情况,真是蛋疼的节奏!不知道如何解决这些问题,望大神多多指教。


4-1

      图示4-1 是获取通讯录信息代码,addressBook出现了潜在的内存泄露,测试发现少量手机会崩溃,仔细检查代码发现如图(4-2);

4-2

修改如下即可:

4-3

5 Memory Error

  在内存检测中遇到了这样的警告"Use of zero-allocationed memory",不是很理解,图示如下:(是个地图导航类.mm文件中出现的)


5-1

离屏渲染

那么到底什么是离屏渲染详细可以拜读https://zhuanlan.zhihu.com/p/72653360

对当前App的界面进行了离屏渲染结果是黄色到处都是,这些界面是由UITabView实现,之所以会很多离屏渲染,主要有以下原因造成

(1) layer的cornerRadius属性和masksToBounds属性使用不当,以为只要使用了这两个属性,就会离屏渲染,这是大错特错的.

(2) 滥用layer的mask属性:控件切圆角.部分代码如下:


针对这两种情况,可以考虑如下优化:

(1) 考虑使用AsyncDisplayKit库,全面提升控件异步渲染性能.

(2) 视图阴影,圆角可以考虑用图片代替

(3)  如果无法用图片代替,cornerRadius属性和masksToBounds属性合理使用,让控件的合理的情况下触发设置圆角.

如对UILable的圆角设置:

let lable =UILabel.init(frame:CGRect(x:0, y:0, width:100, height:20))

    //设置背景色 给layer设置,圆角才有效

  lable.layer.backgroundColor = UIColor.white.cgColor

  lable.layer.cornerRadius=10;

(4) 减少对某个视图 某个方向切圆角 ...... 实在不行就core grapics绘制吧!!! 但性能稍微比mask好点.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容