-3 cocoa objective-c
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];
Run Code Online (Sandbox Code Playgroud)
这段代码在做什么?
它为什么会成倍增加count*sizeof(nspoint)?
什么是NSPoint结构?
NSPoint是表示二维坐标的Cocoa(Mac OS X)结构.它是一样的CGPoint.
该程序创建一个C风格的NSPoints 数组.该数组存储在由NSMutableData对象管理的内存中.由于数组包含objects.count元素,并且每个元素都是a NSPoint,因此他要求NSMutableData分配objects.count * sizeof(NSPoint)内存字节.