Я знаю, что это, вероятно, зависит от того, насколько велик объект, который вы выделяете, но я просто хочу знать, если я продолжу делать что-то подобное, я столкнусь с проблемами позже. На данный момент все выглядит хорошо. Я использую Cocos2D.
Взять этот метод, например:
-(void) checkCGPointDistances{
CCSprite *tempSp;
CCLabelTTF *tempLabel;
for(int i=0; i<hummingBirdsMax; ++i){
tempSp = [hummingBirds objectAtIndex:i];
checkDistance = [[CheckDistance alloc] init];
if([checkDistance checkDistanceWithLimit:tempSp.position withPoint2:hero.heroSprite.position withLimit:150] == YES){
if(hero.heroSprite.position.x > tempSp.position.x){
tempSp.flipX = YES;
}else{
tempSp.flipX = NO;
}
tempLabel = [hummingLabels.labelsArr objectAtIndex:i];
[tempLabel setString:@"Hello!"];
[hummingLabels.deactivateLabelToggle replaceObjectAtIndex:i withObject:[NSNumber numberWithInt:1]];
}
[checkDistance release];
}
if(abilityRushH == 0){
checkDistance = [[CheckDistance alloc] init];
if([checkDistance checkDistanceWithLimit:rushH.rushHSprite.position withPoint2:hero.heroSprite.position withLimit:32] == YES){
[rushH.rushHSprite removeFromParentAndCleanup:NO];
abilityRushH = 1;
NSLog(@"horizontal rush activated");
}
[checkDistance release];
}
if(abilityRushV == 0){
checkDistance = [[CheckDistance alloc] init];
if([checkDistance checkDistanceWithLimit:rushV.rushVSprite.position withPoint2:hero.heroSprite.position withLimit:32] == YES){
[rushV.rushVSprite removeFromParentAndCleanup:NO];
abilityRushV = 1;
NSLog(@"vertical rush activated");
}
[checkDistance release];
}
}
Обратите внимание, как я распределяю и освобождаю checkDistance для каждого цикла в цикле for? Этот метод также вызывается по таймеру очень быстро. Причина, по которой я решил делать выделение снова и снова внутри стихов цикла, заключается в том, что число hummingBirdsMax может быть равно 0, поэтому ему вообще не нужно было бы выделять. Я полагаю, я мог бы просто проверить, если hummingBirdsMax> 0, но то, как я это делаю, имеет большое значение?
Класс, который он выделяет, просто проверяет расстояние между CGPoints и возвращает bool.