我在屏幕上有10个UIImageViews。它们都在一个名为posArray的数组中。我还有另一个被用户拖动的UIImageView,可以点击其他的10.如果一个对象击中其他10个,那么显示简单NSlog消息的简单方法是什么?
现在我正在使用touchesBegin,touchesMoved来移动我的一个对象和下面的这个数组来测试一个对象是否会击中其他十个对象。
我只是觉得有一种更简单,更少的内存消费方式,出于某种原因这样做。
for (int i = 0; i < [posArray count]; i++) {
UIImageView *tempPos;
tempPos = [posArray objectAtIndex:i];
if (CGRectIntersectsRect(red1.frame, tempPos.frame)) {
red1.center = CGPointMake(tempPos.center.x, tempPos.center.y);
NSLog(@"position piece touched");
}
}
答案 0 :(得分:0)
您还可以使用快速枚举来获得更快的速度。您也可以在找到一个匹配项后添加一个break语句(如果您只需要一个匹配项):
for (UIImageView * tempPos in posArray){
if (CGRectIntersectsRect(red1.frame, tempPos.frame)) {
red1.center = CGPointMake(tempPos.center.x, tempPos.center.y);
NSLog(@"position piece touched");
break;
}
}