ios - Objective C 内存布局 : Meaning of the highest 2 bits of a 64bit pointer?

标签 ios objective-c memory

在调试一堆 NSIndexPath 对象时,我注意到其中一个对象有一个不寻常的指针。

其中一个索引路径的地址为 0xc000000388400016。所以它的两个最高位设置为 1。出于兴趣,我很想知道这意味着什么。我知道最低位用于标记指针,但在这种情况下最低位为 0。哪些对象被映射到这个高地址范围?

最佳答案

它在 64 位代码中被标记为指针对象。

在这里查看更多信息:Github

OBJC_TAG_NSAtom            = 0, 
OBJC_TAG_1                 = 1, 
OBJC_TAG_NSString          = 2, 
OBJC_TAG_NSNumber          = 3, 
OBJC_TAG_NSIndexPath       = 4, 
OBJC_TAG_NSManagedObjectID = 5, 
OBJC_TAG_NSDate            = 6, 
OBJC_TAG_7                 = 7

关于ios - Objective C 内存布局 : Meaning of the highest 2 bits of a 64bit pointer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45710700/

相关文章:

iphone - NSMutableArray 和 NSUserdefaults 问题 iPhone

objective-c - typedef 枚举到 Swift 枚举。如何使用案例来标记idleTimerDisabled检测的Pause和Resume?

c - memcpy 的内部实现是如何工作的?

iphone - 将 NSDATA 转换为 UIImage 时速度慢

objective-c - 如何在 NSCollectionView 中正确显示当前选择?

c++ - stringstream、string 和 char* 转换混淆

android - 在调用 Bitmap.recycle() 之后我应该信任垃圾收集器吗?

ios - ipad pro 和笔记本电脑的媒体查询

iOS Swift UILabel 将两行显示为单行

ios - 初始化 super init 和其他