博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初识TaggedPointer对象
阅读量:6213 次
发布时间:2019-06-21

本文共 1762 字,大约阅读时间需要 5 分钟。

hot3.png

//http://www.itnose.net/detail/6491943.html   详情文章int main(int argc, char * argv[]) {    @autoreleasepool {        //将一个对象的指针拆成两个部分:1.一部分直接存取数据。2.另一部分作为特殊标记,表示这是一个特别的指针,不指向任何一个地址        NSNumber *num1 = @10;        NSNumber *num2 = @22;        NSNumber *num3 = @33;        NSNumber *numFFF = @(0xFFFF);                //在64位模拟器中输出        NSLog(@"num1 pointer is %p",num1);//num1 pointer is 0xb 0000000000000a 2        NSLog(@"num2 pointer is %p",num2);//num2 pointer is 0xb 00000000000016 2        NSLog(@"num3 pointer is %p",num3);//num3 pointer is 0xb 00000000000021 2        NSLog(@"numFFF pointer is %p",numFFF);//numFFF pointer is 0xb 0000000000ffff 2        //8字节承载不了时,生成普通的指针        NSNumber *number = @(0xEFFFFFFFFFFFFF);        NSLog(@"number pointer is %p",number);//0x7fe902f00080                        //TaggedPointer优点        //1.专门用来存储小的对象,它只是披着对象的“皮”的普通变量而已,内存读取效率更高                //isa 的bit位含义        /*         struct {         uintptr_t indexed           : 1; 0表示普通的isa,1,表示Tagged Pointer         uintptr_t has_assoc         : 1; 表示该对象是否有过associated对象,如果没有,在析构释放内存时可以更快         uintptr_t has_cxx_dtor      : 1; 表示该对象是否有C++或ARC的析构函数,如果没有,在析构释放内存时可以更快         uintptr_t shiftcls          : 33; 类的指针         uintptr_t magic             : 6;   其固定值为0xd2,用于在调式时分辨对象是否未完成初始化         uintptr_t weakly_referenced : 1;   表示该对象是否有过weak对象,如果没有,在析构释放内存时可以更快         uintptr_t deallocating      : 1;   表示该对象是否正在析构         uintptr_t has_sidetable_rc  : 1;   表示该对象的引用计数值是否大道无法直接在isa中保存         uintptr_t extra_rc          : 19;  表示该对象超过1的引用计数值,例如,如果该对象的引用计数是6,则extra_rc的值为5         };                  */                return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));    }}

转载于:https://my.oschina.net/u/2319073/blog/668635

你可能感兴趣的文章
VC命令行编译开源代码的常用做法
查看>>
算法导论读书笔记-第十三章-红黑树
查看>>
Linux SVN server
查看>>
第三讲 多重背包问题(对背包九讲的学习)
查看>>
MAC OS X 常用命令(转载)
查看>>
一天搞懂深度学习--李宏毅教程分享
查看>>
ecshop 商品详情页显示同类别下的推荐商品
查看>>
Develop Reports Using Crystal Reports in .NET 2005
查看>>
加班对你的提升有多大?
查看>>
[转]SQL Server 存储过程的分页方案比拼
查看>>
有滚动条、固定Header的ASP.Net DataGrid实现
查看>>
服务器安全设置全攻略
查看>>
微信公众号内H5调用微信支付国内服务商模式
查看>>
关于ajax
查看>>
数据库的设计
查看>>
SQL SERVER 的导入导出文件
查看>>
MySQL数据类型
查看>>
三十天学不会TCP,UDP/IP网络编程 - 绅士的开始
查看>>
setTimeOut(),和setInterVal()调用函数加不加括号!!!
查看>>
HDU2276 Kiki & Little Kiki 2 矩阵快速幂
查看>>