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的指针.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...