我的目的是比较几个移动对象CGPoints
的CGPoint
值(并且该应用程序也适用于 Mac OSNSPoints
或NSPoint
值),以检测对象是否具有相同的位置。
我对此的第一个解决方案是快速枚举这些对象的数组并将所有对象存储CGPoints
到一个数组中,然后再次快速枚举对象数组以检查位置是否与任何其他对象相同:
// STEP 1: Collect all Positions
NSMutableArray *allPositions = [NSMutableArray arrayWithCapacity:self.allObjects.count];
for (Object *myObject in self.allObjects) {
CGPoint myObjectPosition = ...;
[allPositions addObject:myObjectPosition]; // Problem here
}
// STEP 2: Check for Overlapping
for (Object *myObject in self.allObjects) {
CGPoint myObjectPosition = ...;
if ([allPositions containsObject:myObjectPosition] {
// Overlapping
}
}
这样做的问题是将点添加到allPositions
数组中。因此NSValue
可以使用:
[NSValue valueWithCGPoint:point];
但这仅在 iOS 下有效,对于 Mac OS,必须使用valueWithPoint
和NSPoint
.
我可以保存字典中的x
和y
值并将它们存储到allPositions
数组中吗?或者是否有更好的解决方案而无需 2 倍快速枚举?大约有100个物体self.allObjects
......