ios – 将NSValue转换回存储在其中的struct类型?

我通过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 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...