iOS OC内存分析优化~笔记

//联系人:石虎QQ: 1224614774昵称:嗡嘛呢叭咪哄

一.内存分析

1.静态分析(Analyze)

不运行程序,直接检测代码中是否有潜在的内存问题(不一定百分百准确,仅仅是提供建议)

结合实际情况来分析,是否真的有内存问题

2.动态分析(Profile == Instruments)

1>运行程序,通过使用app,查看内存的分配情况(Allocations)

*可以查看做出了某个操作后(比如点击了某个按钮\显示了某个控制器),内存是否有暴增的情况(突然变化)

2>运行程序,通过使用app,查看是否有内存泄漏(Leaks)

*红色区域代表内存泄漏出现的地方

二.内存使用注意

1.加载小图片\使用频率比较高的图片

1>利用imageNamed:方法加载过的图片,永远有缓存,这个缓存是由系统管理的,无法通过代码销毁缓存

2.加载大图片\使用频率比较低的图片(一次性的图片,比如版本新特性的图片)

1>利用initWithContentsOfFile:\imageWithContentsOfFile:\imageWithData:等方法加载过的图片,没有缓存,只要用完了,就会自动销毁

2>基本上,除imageNamed:方法以外,其他加载图片的方式,都没有缓存

三.2个专业术语

1.内存泄漏

1>该释放的对象,没有被释放(已经不再使用的对象,没有被释放)

2.内存溢出(Out Of Memory)

1>内存不够用了

2>数据长度比较小的数据类型存储了数据长度比较大的数据

四.图片在沙盒中的存在形式

1.如果项目的Deployment Target <=6.x (不支持图片压缩)

1>所有图片直接暴露在沙盒的资源包(main Bundle),不会压缩到Assets.car文件

2.如果项目的Deployment Target >=7.x (支持图片压缩)

1>放在Images.xcassets里面的所有图片会压缩到Assets.car文件,不会直接暴露在沙盒的资源包(main Bundle)

2>没有放在Images.xcassets里面的所有图片会直接暴露在沙盒的资源包(main Bundle),不会压缩到Assets.car文件

3.总结

1>会压缩到Assets.car文件,没有直接暴露在沙盒的资源包(main Bundle)

*条件:"Deployment Target >= 7.x"并且是"放在Images.xcassets里面的所有图片"

*影响:无法得到图片的全路径,只能通过图片名(imageNamed:方法)来加载图片,永远会有缓存

2>不会压缩到Assets.car文件,直接暴露在沙盒的资源包(main Bundle)

*条件:除1>以外的所有情况

*影响:可以得到图片的全路径,可以通过全路径(imageWithContentsOfFile:方法)来加载图片,不会有缓存

4.结论

1>小图片\使用频率比较高的图片

*放在Images.xcassets里面

2>大图片\使用频率比较低的图片(一次性的图片,比如版本新特性的图片)

*不要放在Images.xcassets里面

五.苹果审核app,审核点

1>不会看app占用的内存是否很大

2>不会看app是否存在很多的内存泄漏

3>用户体验好不好(是否有很多的BUG :比如点5下崩4下)

4>是否包含了色情\暴力的内容(图片或者文字)

5>是否有实用价值(app上的功能至少要对部分用户人群有意义)

6> app中使用了私有API(使用的第三方库中可能会有私有API,比如曾经某个版本的百度地图)

7> ......

8>参考文章: http://blog.csdn.NET/kafeidev/article/details/9081531

六.私有API

1.苹果官方未公开的API

2.一般是不稳定或者比较底层的API(比如获得用户的短信内容\获得用户设备的UDID唯一标识)

3.一般在越狱开发中,才会大量使用私有API(比较少接触越狱开发)

4.如何判断某个功能是否可以实现(是否为私有API) :可以先参考AppStore是否有类似功能的软件

5.底层API !=私有API

七.设备信息相关的开发(非私有API,底层API)

1.设备的型号

2.设备的CPU型号\使用情况

3.设备的内存容量\使用情况

4.设备的硬盘容量\使用情况

5.......

6.推荐的第三方库

1>iOS-System-Services

*地址: https://github.com/Shmoopi/ios-System-Services

*实现思路:封装了很多模型(硬件模型\内存模型\进程模型,每一个模型对应着具体的功能)

*使用难易度:简单

2> uidevice-extension

*地址: https://github.com/erica/uidevice-extension

*实现思路:利用分类给UIDevice进行了扩展

*使用难易度:非常简单

八.如何让程序尽量减少内存泄漏

1.非ARC

* Foundation对象(OC对象) :只要方法中包含了alloc\new\copy\mutableCopy\retain等关键字,那么这些方法产生的对象,就必须在不再使用的时候调用1次release或者1次autorelease

* CoreFoundation对象(C对象) :只要函数中包含了create\new\copy\retain等关键字,那么这些方法产生的对象,就必须在不再使用的时候调用1次CFRelease或者其他release函数

2.ARC(只自动管理OC对象,不会自动管理C语言对象)

* CoreFoundation对象(C对象) :只要函数中包含了create\new\copy\retain等关键字,那么这些方法产生的对象,就必须在不再使用的时候调用1次CFRelease或者其他release函数

3.block的注意

// block的内存默认在栈里面(系统自动管理)

void(^test)() = ^{

};

//如果对block进行了Copy操作, block的内存会迁移到堆里面(需要通过代码管理内存)

Block_copy(test);

//在不需要使用block的时候,应该做1次release操作

Block_release(test);

[test release];

谢谢!!!

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

推荐阅读更多精彩内容