这段代码在做什么? (创建C样式的NSPoints数组)

时间:2012-01-31 18:30:33

标签: objective-c cocoa

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结构?

1 个答案:

答案 0 :(得分:5)

NSPoint是表示二维坐标的Cocoa(Mac OS X)结构。它与CGPoint相同。

该程序创建一个NSPoint的C风格数组。该数组存储在由NSMutableData对象管理的内存中。由于数组包含objects.count个元素,并且每个元素都是NSPoint,因此他要求NSMutableData分配objects.count * sizeof(NSPoint)个字节的内存。