- 主题:智能指针真想用的爽, 还得是intrusive的
呀,我擦,在这丢人了。。。
我改,改成NSNumber可以吧。。。
【 在 tgfbeta 的大作中提到: 】
: 等一等,NSInteger难道不是int的别名?
--
FROM 58.213.26.*
有没有相关书籍讲一下, 我也觉得shared_ptr污染很讨厌, 但是也没办法
【 在 dnd (tongtong) 的大作中提到: 】
: 另外,shared_ptr用作函数参数这种事本身就是要慎重对待的,能免则免。
--
FROM 117.173.132.*
(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.*
这方面的底层优化是不是跟swift的一些“黑魔法”有关系?
我基本只关注编程语言的语义层面,不太关心它底层实现的。
【 在 tgfbeta 的大作中提到: 】
: (NSNumber *)还有个问题,就是最近几年64bit平台上开了tagged pointer优化。
: 因为地址只用到48 bit,再加上对齐,47 bit(ARM64是33 bit),NSObject结构体地址的低4bit肯定是0,所以用来打标签。
: 如果打了标签,就直接把不够大的数放在64bit的指针地址里,不用再寻址了。
: ...................
--
FROM 58.213.26.*
跟swift关系真的不大
只是objc runtime的优化,实际上这些黑科技早在MacOS classic年代就用过
【 在 dnd (tongtong) 的大作中提到: 】
: 这方面的底层优化是不是跟swift的一些“黑魔法”有关系?
: 我基本只关注编程语言的语义层面,不太关心它底层实现的。
--
FROM 36.106.167.*
话说ash的第二卷 不知道出了没, 很期待
【 在 tgfbeta (右旋肉碱) 的大作中提到: 】
: (NSNumber *)还有个问题,就是最近几年64bit平台上开了tagged pointer优化。
: 因为地址只用到48 bit,再加上对齐,47 bit(ARM64是33 bit),NSObject结构体地址的低4bit肯定是0,所以用来打标签。
: 如果打了标签,就直接把不够大的数放在64bit的指针地址里,不用再寻址了。
: ...................
--
FROM 218.200.160.*