如何以简单的方式将CGPoint对象添加到NSArray?

时间:2009-05-22 19:29:38

标签: ios objective-c iphone cocoa-touch uikit

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

4 个答案:

答案 0 :(得分:319)

使用UIKit Apple向NSValue添加了对CGPoint的支持,您可以这样做:

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];

答案 1 :(得分:7)

我用这个:

创建数组:

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

获取第一个CGPoint对象:

CGPoint myPoint = [myArray[0] CGPointValue];

答案 2 :(得分:3)

你也可以用最小的形式写这个:

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

CGPoint p2 = myArray[1];

答案 3 :(得分:2)

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