告诉你可能不知道的秘密之Android轻量级引用LightRefBase
来源:互联网 发布:重庆数控编程培训 编辑:程序博客网 时间:2024/06/02 09:27
Google工程师之所以称其为轻量级引用,不仅仅是因为轻量级引用不涉及弱引用技术。
轻的额外三点:
1.轻量级引用轻在功能,采用模板技术,模板里有关于指针类型转换的代码,LightBaseRef<MyClass>必须作为MyClass的基类才能完成转换,仅仅为MyClass类型及其派生类型对象提供引用计数功能!总而言之,不同类继承体系拥有不同的引用技术基类。
2.轻量级引用轻在机制,正如上一点所言,采用模板机制,而不是复杂的OOP机制,所以轻量级引用不涉及菱形缺陷,无需使用虚继承!
3.轻量级引用基类轻在内存,只拥有一个成员变量,用以计数。其引用计数类模板不含有虚函数,如果尾端类(不被其他类继承的类)直接继承引用计数基类,那尾端类也不需要虚的析构函数,不会出现因部分删除而产生内存泄露,因为模板类代码中有一处使用static_cast向下转型,模板确保其安全。
android的智能指针,只负责调用 引用类的dec/inc方法,不负责删除工作。具体删除工作有引用基类LightRefBase和RefBase负责。
RefBase持有弱引用,持有指针,在进行删除工作时较为复杂。
总之,轻量级引用,功能简单,不涉及虚继承,一般不需要虚函数。
轻量级引用的缺陷:
1.不支持弱引用。
2.轻量级引用类,使用模版技术,所以模版技术的缺陷,轻量级引用亦有,很明显一点就是你会需要很多不同轻量级引用类。
3.编译级别支持引用栈对象,运行时会崩溃,Scott Meyers说过只要编译器允许,就一定有人这么干。此问题需要使用者解决-----利用protected dector 和 friend class refbase
本文乃我学习时,自己总结,如果有错误请多多指教。
- 告诉你可能不知道的秘密之Android轻量级引用LightRefBase
- Object 你可能不知道的“=”秘密
- 分享两个你可能不知道的Java小秘密
- Android模拟器你不知道的秘密
- 资深HR告诉你,面试中你不知道的那些秘密!
- 你可能不知道的
- Android偏好设置SharedPreference你不知道的秘密
- 你可能不知道的百度的三个有趣的秘密
- 你可能不知道的Visual Studio 2010使用技巧(VS2010的秘密)
- java单例设计模式中你可能不知道的秘密
- 手机管家6.0你可能不知道的六个小秘密
- 告诉你所不知道的typedef
- 告诉你所不知道的typedef
- 你可能不知道的 Android Studio 小技巧之「多行编辑」
- 你可能不知道的 Android Studio 小技巧之「多行编辑」
- Android中一些你可能不太知道的东西
- 10个你可能不知道的 Android Studio技巧
- 10个你可能不知道的 Android Studio技巧
- think in java interview-高级开发人员面试宝典(七)
- IOS7 新特性说明
- 查询其字段值包含某关键字的所有表名
- In-System Memory Content Editor
- 导致电脑网速变慢的几个方面
- 告诉你可能不知道的秘密之Android轻量级引用LightRefBase
- 从文件I/O 看Linux 的虚拟文件系统
- microsoft windows 使用工具
- mysql 常用命令记录
- Java多线程基础知识总结笔记
- storm性能测试报告
- 风宇冲Unity3D教程学院-----Shader篇
- js获取某月的最后一天
- How to get the Diagnostic data and debug file of Sales Order pick release