资源打包 内存分配 内存管理

一:资源打包

图片资源是放到Images.xcassels里面

1、部署版本在>=iOS8.0的时候,打包的资源包中的图片会被放到Assets.car中,图片有被压缩。

2、部署版本在<iOS8的时候,打包的资源包中的图片会被放到MainBundle里面,图片没有被压缩。

3、图片直接被托到项目中,无论部署版本是多少,都会被放到MainBundle里面,图片没有被压缩

二、内存分配

1、使用imageName:加载图片

(1)加载内存当中之后,会一直停留在内存当中,不会随着对象的销毁而销毁。

(2)加载进去图片之后,占用的内存归系统管理,我们无法管理。

(3)相同的图片,图片不会重复加载。

(4)加载到内存中后,占据内存空间较大。

2、使用imageWithContentsofFile:加载图片

(1)加载到内存当中后,占据内存空间较小。

(2)相同的图片会被重复加载内存当中。

(3)对象销毁的时候,加载到内存中图片会随着一起销毁。

结论:

1、如果图片较小,并且使用频繁的图片,使用ImageName来加载图片(按钮图标/主页里面图片)

2、如果图片较大,并且使用较少,使用imageWithContentsoOfFile:来加载(版本新特性/相册)

三、内存管理

什么内存管理?

堆里不再使用的对象,没有被销毁,依然占据着内存

1、静态内存分析

(1)不运行程序,直接根据程序的语法结果,进行分析。

(2)相对不太准确,但是如果发现有地方提示可能有内存泄露,最好根据实际情况看一下。

2、动态内存分析

如果发现内存泄露,基本可以确定某一个地方确实发生的内存泄露,之后很据实际代码情况来解决该问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容