我正在尝试将 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