我怎样才能简单地将 CGPoint 对象添加到 NSArray 中?

我有大约50个 CGPoint 对象来描述类似“路径”的东西,我想把它们添加到 NSArray 中。它将是一个方法,只返回给定索引的相应 CGPoint。我不想创建50个变量,比如 p1 = ... ; p2 = ... 等等。有没有一种简单的方法可以让我在用对象初始化 NSArray 时“立即”定义这些点?

56921 次浏览

随着 UIKit苹果增加了对 CGPoint 的支持到 NSValue,所以你可以这样做:

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

列出尽可能多的[ NSValue ]实例作为您的 CGPoint,并以 nil 结束列表。这个结构中的所有对象都是自动释放的。

另一方面,当您从数组中提取值时:

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

你看过 CFMutableArray了吗? 那可能对你更有用。

我用这个:

创建数组:

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

获取第一个 CGPoint 对象:

CGPoint myPoint = [myArray[0] CGPointValue];

你也可以这样写:

CGPoint myArray[] = { CGPointMake(5.5, 6.6), CGPointMake(7.7, 8.8) };


CGPoint p2 = myArray[1];