나는 이것이 아마도 당신이 할당하고있는 객체의 크기에 달려 있다는 것을 알고 있지만, 나는 내가 나중에 이런 문제들을 해결할 수있는 방법을 계속하고 있는지 알고 싶다. 지금 당장은 모든게 잘된 것 같습니다. 나는 Cocos2D를 사용하고있다. 내가 할당하고 for 루프의 모든 루프 checkDistance 할당을 해제하고있어 어떻게Objective C에서 할당 및 할당 해제는 얼마나 빠릅니까?
-(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];
}
}
주의 사항 :
는 예를 들어이 방법을 가지고? 이 메서드는 매우 빠르게 타이머에서 호출됩니다. 루프 바깥쪽에 반복적으로 할당을하기로 결정한 이유는 hummingBirdsMax의 수가 0 일 수 있기 때문입니다. 따라서 할당을 전혀 할 필요가 없습니다. 나는 단지 hummingBirdsMax> 0인지를 확인할 수있을 것이라고 생각한다.하지만 내가하는 일이 그다지 다르지 않은가?
할당하는 클래스는 CGPoints 사이의 거리를 확인하고 bool을 반환합니다.
'CheckDistance'구현을 게시 할 수 있습니까? 특히'init' 메소드는 무엇입니까? – Yuji