cocos2DのCCLayerに実装されたタッチが終了しました。タッチを受信すると、メソッドが呼び出されます。ただし、メソッドを呼び出すと、「EXC_BAD_ACCESS」が原因でアプリが常にクラッシュするようです。呼び出すメソッドでは、NSMutableDictionaryから読み取ろうとします。コードは次のとおりです。
- (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
{
CGPoint touchPoint = [touch locationInView:[touch view]];
touchPoint = [[CCDirector sharedDirector] convertToGL:touchPoint];
int current = 1;
int i = 1;
for (i=1; i<=4; i++) {
CCNode *sprite = [layer2 getChildByTag:i];
CGPoint worldCoord = [layer2 convertToWorldSpace:sprite.position];
CGRect bounds = CGRectMake(worldCoord.x-sprite.boundingBox.size.width, worldCoord.y-sprite.boundingBox.size.height/2, sprite.boundingBox.size.width, sprite.boundingBox.size.height);
//CCLOG(@"Sprite%i:%f,%f at %f,%f",i,bounds.size.width,bounds.size.height,bounds.origin.x,bounds.origin.y);
if (CGRectContainsPoint(bounds, touchPoint)) {
CCLOG(@"touched sprite:%i",i);
current = i;
[self checkSpriteTouch:current]; //error occurs when this method is called
break;
}
}
}
-(void)registerWithTouchDispatcher{
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:1 swallowsTouches:NO];
}
-(void)checkSpriteTouch:(int)i{
NSMutableDictionary *dict = [storeDict objectForKey:[NSString stringWithFormat:@"Char%i",1]]; //when using debugging, app crashes here at this line
NSNumber *boughtValue = [dict objectForKey:@"Bought"];
}
アプリケーションがクラッシュするのはなぜですか?他のtouchEndedメソッドで実装する他のすべてのメソッドは、完全に正常に機能します...よろしくお願いします!どんな助けでも大歓迎です^_^