在 NSArray
中存储 c 结构的常用方法是什么? 优点、缺点、内存处理?
值得注意的是,valueWithBytes
和 valueWithPointer
之间的区别是什么。
这里有一个链接 ,为未来的读者提供苹果公司关于 valueWithBytes:objCType:
的讨论..。
对于一些水平思考和更多地关注性能,Evgen 提出了在 C + + 中使用 STL::vector
的问题。
(这引发了一个有趣的问题: 是否有一个快速的 c 库,与 STL::vector
没有什么不同,但要轻得多,它允许最小限度地“整齐地处理数组”... ... ?)
所以最初的问题是..。
例如:
typedef struct _Megapoint {
float w,x,y,z;
} Megapoint;
那么,在 NSArray
中存储自己的结构的最常见、最好、最惯用的方法是什么呢? 在这种惯用方法中,您如何处理内存?
请注意,我正在特别寻找存储结构的常用习惯用法。当然,可以通过创建一个新的小类来避免这个问题。然而,我想知道在数组中实际放置结构的常用习惯用法是怎样的,谢谢。
顺便说一下,这里的 NSData 方法也许不是最好的..。
Megapoint p;
NSArray *a = [NSArray arrayWithObjects:
[NSData dataWithBytes:&p length:sizeof(Megapoint)],
[NSData dataWithBytes:&p length:sizeof(Megapoint)],
[NSData dataWithBytes:&p length:sizeof(Megapoint)],
nil];
顺便说一句,感谢 Jarret Hardie,以下是如何在 NSArray
中存储 CGPoints
和类似的内容:
NSArray *points = [NSArray arrayWithObjects:
[NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
[NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
nil];