1

我正在尝试将 UITouches 中的 CGPoints 存储在一个数组中。通过阅读其他线程,我意识到使用 NSValue 似乎是最好的方法。目前我有:

NSMutableArray *dotsArray;
NSValue *pointObj;
UITouch *touch = obj;
CGPoint touchPoint = [touch locationInView:self.view];
// Need to store the CGPoints, can't store directly into an array // as it is a C struct           // so we use NSValue
// CGPoint converted to NSValue
CGPoint point = touchPoint;
pointObj = [NSValue valueWithCGPoint:point];
dotsArray = [NSArray arrayWithObjects:pointObj,nil];
// Print to console the objects in the collection
NSLog(@"array content: %@", dotsArray);
NSLog(@"[dotsArray count] = %i",[dotsArray count]);
// Restore from NSValue to C structures
CGPoint pointRestored = [pointObj CGPointValue];

我希望能够使用:

[dotsArray insertObject:pointObj atIndex:0]; 

代替

dotsArray = [NSArray arrayWithObjects:pointObj,nil]; 

这样我就可以在回忆存储多个点的方法时增加放置。

从阅读中我认为这与“insertObject”所需的 ID 类型有关,但我并不完全理解它,也无法在线找到解决方案。

编辑:当我使用

[dotsArray insertObject:pointObj atIndex:0];

然后

NSLog(@"array content: %@", dotsArray);

输出 NULL

4

2 回答 2

0

您要使用的方法[dotsArray insertObject:pointObj atIndex:0];是指数组的id,即数组位置。这意味着atIndex:0是数组中的第一个位置,因为数组从第零位开始。所以现在如果你把它放在你的DotsArray中,你想要调用的索引或 ID 类型就是你想要显示的点的值。

于 2012-07-30T11:07:22.030 回答
0

使用addObject:方法。

[dotsArray addObject:pointObj];

我想这会对你有所帮助。

于 2012-07-30T11:18:28.283 回答