NSArray *objects = ... // array of objects with a coordinate
unsigned int count = [objects count];
NSMutableData *data = [NSMutableData dataWithLength:count*sizeof(NSPoint)];
NSPoint *points = (NSPoint*)[data bytes];
unsigned int i;
[data retain];
for (i=0; i<[objects count]; i++) {
points[i] = [[objects objectAtIndex:i] coordinate];
}
[data release];
这段代码在做什么?
为什么它会乘以count*sizeof(nspoint)
?
什么是NSPoint
结构?
答案 0 :(得分:5)
NSPoint
是表示二维坐标的Cocoa(Mac OS X)结构。它与CGPoint
相同。
该程序创建一个NSPoint
的C风格数组。该数组存储在由NSMutableData
对象管理的内存中。由于数组包含objects.count
个元素,并且每个元素都是NSPoint
,因此他要求NSMutableData
分配objects.count * sizeof(NSPoint)
个字节的内存。