【iOS开发】iOS知识点总结
2016-01-10 14:48
288 查看
1.类方法创建的对象的作用域或者说是会在什么时候释放?
2.自动释放池的创建跟销毁时间
一个事件周期又是什么呢?网上没找到答案。。。下次补充吧
3.iOS中图片下载的原理
类方法创建的对象会在合适的地方自动的插入antorelease,所以不需要我们去手动的发送release或者autorelease。例如imageNamed这个方法,使用这种方式生成的对象被autorelease之后,图片依然存在于内存,并不会及时回收,只有当自动释放池销毁的时候会向池中对象发送release消息。如果图像比较大,或者图像比较多,用这种方式会消耗很大的内存。但是自动释放池又是在什么时候销毁的呢?我们接着往下看
2.自动释放池的创建跟销毁时间
在每一个事件周期(event cycle)的开始,系统会自动创建一个自动释放池;在每一个事件周期的结尾,系统会自动销毁这个自动释放池。一般情况下,你可以理解为:当你的代码在持续运行时,自动释放池是不会被销毁的,这段时间内你也可以安全地使用自动释放的对象;当你的代码运行告一段落,开始等待用户输入(或者其它事件)时,自动释放池就会被释放掉,池中的对象都会收到一个release消息,有的可能会因此被销毁。 到此为止,相信你已经对自动释放的机制有了一个大体的了解。自动释放而非直接释放,可以帮助你节省一些代码量,提高开发速度。但是它有一个直接的缺点:它延缓了对象的释放,在有大量自动释放的对象时,会占用大量内存资源。因此,你需要避免将大量对象自动释放。并且,在以下两种情况下,你需要手动建立并手动销毁掉自动释放池: 1.当你在主线程外开启其它线程时:系统只会在主线程中自动生成并销毁掉自动释放池。 2.当你在短时间内制造了大量自动释放对象时:及时地销毁有助于有效利用iPad上有限地内存资源。
一个事件周期又是什么呢?网上没找到答案。。。下次补充吧
3.iOS中图片下载的原理
如何确保图片不会重复下载呢?我们一般下载图片的时候会先在内存以及沙盒中查看图片是否存在。如果不存在,会发送网络请求下载然后会在内存以及沙盒中各自存一份。但是我们怎么知道图片已经下载过了呢?既然不同的图片有不同的URL,我们将图片缓存到本地的时候直接使用url作为文件名不就可以了。但你要知道url是带有类似冒号和斜杠等特殊字符的字符串,所以作为文件名肯定是不合适的,那么这个时候我们可以通过一对一加密来实现。能生成作为文件名的算法又比较好用的就是MD5加密了。sd_setImageWithURL应该就是这样实现的(猜的,不一定对)。
相关文章推荐
- iOS开发之路--微博“更多”页面
- iOS开发之路--微博骨架搭建
- IOS开发代码分享之获取启动画面图片的string
- IOS开发之路--C语言数组和字符串
- IOS开发代码分享之用nstimer实现倒计时功能
- IOS开发代码分享之设置UISearchBar的背景颜色
- iOS和tvOS游戏按需加载资源简介
- ios开发之环境搭建-01
- 在开发iOS程序时对日期处理的总结
- iOS开发——keychain的使用
- iOS Graphics Technologies iOS 图形技术
- iOS开发异常错误总结
- 学习Objective-C:入门手册
- iOS开发 简单实现视频音频的边下边播
- 初学ios开发之iOS 证书、描述文件、AppID
- iOS开发 — Quartz 2D知识点应用 (制作了一个Demo,源代码)
- ios开发对配置文件plist的操作
- iphone5和4的屏幕兼容问题
- 9秒的课程只为培养靠谱的IOS和HTML5开发人才而定制