102-资源打包,内存分配,内存泄漏,私有API,硬件信息的获取,使用imageName加载图片和使用imageWithContentsOfFile加载图片的场合优缺点及内存分析

一 资源打包

1.如果部署版本>=8,并且图片放在Images.xcassets中,图片打包后会被放在Assets.car,并且会对图片资源进行压缩

2.如果部署版本<8.0,图片资源会被放在MainBundle中,并且不会被图片资源进行压缩

3.如果图片直接拖入项目中,不管部署版本是多少,都会被放入到MainBundle中

注意:
1.如果现在不需要支持iOS7,可以将部署版本改成iOS8,这样最终打包的资源会很小
2.如果想要获取其他应用程序的资源,只能是该应用<8.0,iOS88.0以上就无法获取它的资源

二.内存分配 

cmd+I 打开工具Instruments ,选择Allocations 检测内存分配工具 





三 使用imageName加载图片和使用imageWithContentsOfFile加载图片的场合优缺点及内存分析

使用imageName加载图片
1>相同的图片被加载到内存中,只会加载一次
2>当对象销毁的时候,图片不会被销毁
3>系统管理,不受程序员控制
4>加载到内存当中图片,占据的内存空间较大

使用imageWithContentsOfFile加载图片
1>加载出来的图片就会马上被销毁
2>图片会被重复添加到内存当中
3>加载到内存当中图片,占据的内存空间较小

总结:
1>使用频率非常高,且图片较小的时候,使用imageName加载图片(例如图标/Button)
2>使用频率非常低,切图片较大的时候,使用imageWithContentsOfFile加载图片(例如版本新特性/相册)

四 内存泄漏
注意:大多出现在MRC/CoreFoundation框架中
MRC:创建对象没有Release
CoreFoundation框架:出现creat,copy等关键字时候没有Release

什么是内存泄漏
在开发过程中,如果创建一个对象,系统会为该对象分配一个内存,当该对象不在使用的时候,会回收掉内存,该对象如果不在使用,但是内存没有被回收,就会造成内存泄漏(该销毁的对象没有被销毁)

1.静态内存分析
1>不运行程序,直接程序的内存进行分析
2>通过上下文的语法结构,来得出结论,是否有内存泄漏
3>相对不是很准确,但是如果发现有内存泄漏,可以结合代码,具体查看
选中当前项目


2.动态内存分析
1>真正运行起来程序,分析是否内存泄漏
2>借助工具进行分析
3>一旦发现内存泄漏,基本可以确定存在内存泄漏,一定结合代码去修改






五 私有API(如果使用,不运行上架)
不能运行上架的原因

1.私有API比较底层,和操作系统相关(拿到用户隐私:通话记录/短信)
2.一些不太稳定的API(使用过程中,会出现各种bug)
3.UISegment界面统一化

六 硬件信息的获取
例:该微博来自于iPhone6plus 64g版
1.获取手机型号
2.获取磁盘一共多少空间,剩余多少空间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值