当前位置:首页 » 文件管理 » sdwebimage缓存机制

sdwebimage缓存机制

发布时间: 2025-02-01 00:02:55

① 中高级IOS开发程序员要具备哪些能力和技能

一、数据加密必备技能-密码学
在网络加速发展的时代,数据安全已经是一个必不可少的技术课题。如何让用户数据、网络数据、内容数据安
全可靠,也是每个开发者需要深思并捍卫的。熟练掌握密码学原理,了解 MD5 算法、非对称、对称加密算法底 层实现,以及如何运用到项目开发中。让开发者实力捍卫数据安全!
1.密码的起源历史
2.Base 64 编码格式、散列函数
3.MD5 &加盐、HMAC加密
4.对称加密算法
5.RSA Openssl、数字签名
二、RunLoop
RunLoop是iOS和OS X中非常基础的一个概念,在开发中不常用,在面试中也几乎是都会问到的一个问题.对RunLoop的概念以及底层实现原理,都是我们应该要掌握的,并且要知道在开发中哪些地方可以使用到RunLoop。
1.能理解RunLoop概念
2.知道RunLoop的使用方式
3.RunLoop在开发中的使用
三、Runtime
OC 纵横 iOS 开发已经多年,但是我们真的了解他们?他到底是怎么样的一个底层原理?在使用上难道就真的只有
这样?我们该如何更加掌握这门语言的应用?另外 OC 能做到的 Swift 也能做到吗?
1.runtime 到底是什么
2.runtime 怎么运用
3.runtime 怎么运用
4.siwft 中如何使用runtime
四、SDWebImage源码的分析
在开发中, 为了提高工作的效率, 我们大都会引入很多的框架, 觉得只要能能完成自己的工作达到目的就行, 当然这没错,但是确忽略了很多好框架中的编程思想,和实现的逻辑, 只知道使用框架, 不知道它里面的精髓, 长远来说对我们的发展是不好的, 所以让我们从经典的框架开始学起,一起来学习SDWebImage的精髓.
1.SDWebImage的demo的分析
2.SDWebImage缓存的概念
3.下载超时和图片的格式区分
4.SDWebImage的清理机制和内存的监听
五、H264编码
扎克伯格说“视频是未来facebook社交的最重要的行为之一”。作为开发而言,我们应该了解视频如何做到编码。在直播平台编码的技术也是频频使用,让我们从业务层跨往视频编码底层的第一步。
1.了解直播项目的架构以及技术突破点;
2.视频组成原理
3.H264文件的结构
4.软编码和硬编码的区别以及应用场景
5.硬编码的原理
6.使用硬编码编码视频文件
7.H264解码的多种处理方式
六、AAC编码
直播、音视频项目已经是iOS 应用类的APP的中坚力量。解密音频编码过程,让开发者不在对编码讳莫如深。映客、全名K歌、网易云音乐等等知名APP都会用到的音频AAC编码方式。
1.了解声音从模拟信号到数字信号的原理
2.PCM编码解析
3.AAC编码原理
4.AAC文件的结构
5.音频在软编码FFmpeg 和 硬编码的区别
6.利用硬编码编码音频
7.捕获媒体数据,如何区分音视频数据
8.利用FFmpeg 合成 H264文件和AAC文件到MP4容器中

② 谈一谈NSCache

NSCache介绍

NSCache是苹果提供的一套缓存机制,与NSMutableDictionary可变字典的用法类似,常见于一些第三方库,比如AFNetworking,SDWebImage。

使用场景:通常用使用缓存来临时存储短时间使用但创建昂贵的对象,优化性能,避免这些对象的多次创建 。

NSCache和NSMutableDictionary的区别

1、NSCache是线程安全的,不需要加线程锁,而NSMutableDictionary线程不安全州神,多线程访问和操作,需要我们自己设置管理。

2、NSCache的内存由系统管理,当内存不足时,NSCache会自动释放内存。

3、NSCache可以设置缓存对象数量和占用的内存大小,当缓存超出了设置,会自动释放内存。

4、NSCache是Key-Value的数据结构,其中key是强引用,不实现NSCoping协议,作为key的对象不会被拷贝。

下面介绍NSCache的属性、方法、代理

属性

countLimit: 能够缓存对象的最大数量,默认值是0,没有限制(限制是不精/不严格的)。 totalCostLimit: 设置缓存占用的内存大小(限制是不精/不启迹猜严格的)。

: 是否回收废弃内容,默认YES。

方法

setObject: forKey: 缓存对象。

setObject: forKey: cost: 缓存对象,并指定key值对应的成本,用于计算缓存中所有对象的总成本。

objectForKey: 通过key获得缓存对象。

removeObjectForKey: 删除指定对象removeAllObjects: 删除所有缓存对象

代理(NSCacheDelegate)

willEvictObject: 缓存对象即将被清理时调用,一般开发者用来调试,不能在此方法中修改缓存

以下场景会被调用:

1、 removeObjectForKey

2、缓存对象超过NSCache的countLimit和otalCostLimit属性设置的限制

3、App进入后台

4、系统发出内存警告

5、cache这个实例的生命周期结束前

NSCache注意点

1、当收到内存警告,而我们又调用removeAllObjects,则无法再继续往缓存中添加数据。

-(void)didReceiveMemoryWarning{

[super didReceiveMemoryWarning];

// 当收到内存警告,在悄型这里清除缓存

[self.cache removeAllObjects];

// 如果再继续添加数据的话 会直接被删除

}

2、不提供缓存总的大小,想知道NSCache占用的内存大小,只有通过添加缓存的cost自己计算。

3、NSCache自动释放内存的算法是不确定的, 有时是按照LRU(最近最久未使用)释放,有时随机释放。

4、NSCache中的数据在APP重启后会消失,因为NSCache只是将数据保存在内存。

热点内容
wifi共享精灵源码 发布:2025-02-01 02:40:15 浏览:970
java软件怎么安装 发布:2025-02-01 02:40:09 浏览:546
河北税务局电子密码是什么 发布:2025-02-01 02:40:07 浏览:832
检查服务器设置是什么意思 发布:2025-02-01 02:31:26 浏览:182
神偷四第四章密码是多少 发布:2025-02-01 02:07:29 浏览:12
qq登录在哪个文件夹 发布:2025-02-01 01:57:59 浏览:624
如何加入安卓代理 发布:2025-02-01 01:51:40 浏览:2
我的世界手游服务器刷钻石教程 发布:2025-02-01 01:48:13 浏览:773
sqlifthen男女 发布:2025-02-01 01:44:59 浏览:690
幻灵和安卓哪个互通 发布:2025-02-01 01:43:33 浏览:648