gpt4 book ai didi

ios - 将 NSValue 转换回存储在其中的结构类型?

转载 作者:技术小花猫 更新时间:2023-10-29 11:00:01 29 4
gpt4 key购买 nike

我通过 NSValue 对象和以下代码行将 Chipmunk Physics 的 cpShape 对象存储在 NSMutableDictionary 中:

NSValue *shapeValue = [[NSValue alloc] initWithBytes: shape objCType: @encode(cpShape)];
[staticBodiesInUse setObject: shapeValue forKey: name];

我现在需要取回 cpShape,以便将它与另一个形状进行比较。我怎样才能做到这一点?我在 NSValue 中看到一个 getValue: 方法,但它需要一个缓冲区,不太确定如何处理它。

最佳答案

所以trojanfoe的回答只对了一部分。

这样做有一个巨大的问题。当您以这种方式创建 NSValue 时,您正在复制 cpShape 结构,然后将其取回,您正在再次复制它。 cpShape 结构几乎专门用于引用。每次复制它时,您都会获得对新副本的新引用,并且其中一些副本存在于堆栈中并会自动静默销毁。非常非常糟糕。

相反,您想使用 [NSValue valueWithPointer:shape] 创建一个 NSValue 并使用 [value pointerValue] 取回该指针。这样,NSValue 仅存储指向原始 cpShape 的指针。

关于ios - 将 NSValue 转换回存储在其中的结构类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14685938/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com