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

前端之家收集整理的这篇文章主要介绍了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的指针.

原文链接:https://www.f2er.com/iOS/329372.html

猜你在找的iOS相关文章