我怎样才能以简单的方式将CGPoint对象添加到NSArray?

我有大约50个描述类似“path”的CGPoint对象,我想将它们添加到NSArray中。 这将是一个方法,只会返回给定的索引相应的CGPoint。 我不想创build50个variables,如p1 = …; p2 = …等等。 有没有一种简单的方法可以让我用对象初始化NSArray时“立即”定义这些点?

使用UIKit Apple将CGPoint支持添加到NSValue ,因此您可以执行以下操作:

 NSArray *points = [NSArray arrayWithObjects: [NSValue valueWithCGPoint:CGPointMake(5.5, 6.6)], [NSValue valueWithCGPoint:CGPointMake(7.7, 8.8)], nil]; 

列出与CGPoint一样多的[NSValue]实例,并以nil结束列表。 该结构中的所有对象都是自动释放的。

另一方面,当您将值从数组中拉出时:

 NSValue *val = [points objectAtIndex:0]; CGPoint p = [val CGPointValue]; 

我使用这个:

创build数组:

 NSArray *myArray = @[[NSValue valueWithCGPoint:CGPointMake(30.0, 150.0)],[NSValue valueWithCGPoint:CGPointMake(41.67, 145.19)]]; 

获取第一个CGPoint对象:

 CGPoint myPoint = [myArray[0] CGPointValue]; 

你看过CFMutableArray吗? 这可能对你更好。

你也可以用标准的C / C ++方式编写它:

 CGPoint oldschool[] = { CGPointMake(5.5, 6.6), CGPointMake(7.7, 8.8) }; CGPoint p2 = oldschool[1];