在NSArray
中存储c struct 的常用方法是什么?优点,缺点,内存处理?
值得注意的是,valueWithBytes
和valueWithPointer
之间的区别是什么——由贾斯汀和鲶鱼饲养.
Here's a link到苹果为future 读者讨论的valueWithBytes:objCType:
...
为了进行一些横向思考并更多地关注性能,Evgen提出了在C++中使用STL::vector
的问题.
(That raises an interesting issue: is there a fast c library, not unlike 100 but much much lighter, that allows for the minimal "tidy handling of arrays" ...?)
所以最初的问题...
例如:
typedef struct _Megapoint {
float w,x,y,z;
} Megapoint;
那么:在NSArray
中存储自己的 struct 的正常、最好、惯用的方法是什么?你如何处理这种惯用方法中的记忆?
请注意,我特别寻找存储 struct 的常用习惯用法.当然,可以通过创建一个新的小类来避免这个问题.不过,我想知道将 struct 放入数组的常用习惯用法是什么,谢谢.
顺便说一句,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];
(见How can I add CGPoint objects to an NSArray the easy way?)