- 主题:智能指针真想用的爽, 还得是intrusive的
Objective-C的NSObject是你说的这种吧?
这些继承自NSObject的指针是拥有引用计数的“裸指针”。
其实ObjC中不存在专门的“智能指针”吧?
而真正的裸指针(比如int*)在ObjC里也不会拥有任何“智能”
(你得用NSInteger *)
【 在 xieyf 的大作中提到: 】
: 传参数的时候, 想穿裸指针就传指针, 想传smart ptr就传smart ptr
: 到函数里边重新握住就行了,
: 比如这种
: ...................
--
FROM 58.213.26.*
另外,shared_ptr用作函数参数这种事本身就是要慎重对待的,能免则免。
【 在 xieyf 的大作中提到: 】
: 传参数的时候, 想穿裸指针就传指针, 想传smart ptr就传smart ptr
: 到函数里边重新握住就行了,
: 比如这种
: ...................
--
FROM 58.213.26.*
呀,我擦,在这丢人了。。。
我改,改成NSNumber可以吧。。。
【 在 tgfbeta 的大作中提到: 】
: 等一等,NSInteger难道不是int的别名?
--
FROM 58.213.26.*
这方面的底层优化是不是跟swift的一些“黑魔法”有关系?
我基本只关注编程语言的语义层面,不太关心它底层实现的。
【 在 tgfbeta 的大作中提到: 】
: (NSNumber *)还有个问题,就是最近几年64bit平台上开了tagged pointer优化。
: 因为地址只用到48 bit,再加上对齐,47 bit(ARM64是33 bit),NSObject结构体地址的低4bit肯定是0,所以用来打标签。
: 如果打了标签,就直接把不够大的数放在64bit的指针地址里,不用再寻址了。
: ...................
--
FROM 58.213.26.*