add struct(CGPoint, CGSize etc) for NSArray Value in Objective-C

CGPoint p1 = CGPointZero;
CGPoint p2 = CGPointZero;
CGPoint p3 = CGPointZero;
CGPoint p4 = CGPointZero;

NSArray *ary = @[
    [NSValue valueWithBytes:&p1 objCType:@encode(struct CGPoint)],
    [NSValue valueWithBytes:&p2 objCType:@encode(struct CGPoint)],
    [NSValue valueWithBytes:&p3 objCType:@encode(struct CGPoint)],
    [NSValue valueWithBytes:&p4 objCType:@encode(struct CGPoint)]
];

(addition) [NSArray of struct wraped NSValue] to [CArray of struct].

CGPoint cAry[ [ary count] ];
CGPoint p;
int i = 0;
for (id wrapedItem in ary) {
    [wrapedItem getValue:&p];
    cAry[i++] = p;
}