(NSNumber *)还有个问题,就是最近几年64bit平台上开了tagged pointer优化。
因为地址只用到48 bit,再加上对齐,47 bit(ARM64是33 bit),NSObject结构体地址的低4bit肯定是0,所以用来打标签。
如果打了标签,就直接把不够大的数放在64bit的指针地址里,不用再寻址了。
类似还有NSTaggedString,用了一些有趣的编码方法,最多可以编码长度为11的字符串(但是码表受到限制,只限于一部分可打印ASCII)码表可变,分别为8bit原始字符,6bit每字符,或者5bit每字符。
具体的分析可以读Mike Ash的blog。
【 在 dnd (tongtong) 的大作中提到: 】
: 呀,我擦,在这丢人了。。。
: 我改,改成NSNumber可以吧。。。
--
FROM 36.106.167.*