0

次のコードを含む xcode プロジェクトがあります。

flayer.h で

int *ffinjar;

flayer.mで

-(void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event {
    CGSize winSize = [[CCDirector sharedDirector] winSize];
    CGPoint touchLocation = [self convertTouchtoNodeSpace:touch];
    CGPoint oldTouchLocation = [touch previousLocationInView:touch.view];
    oldTouchLocation = [CCDirector sharedDirector] convertToGL:oldLocation];
    oldTouchLocation = [self convertoToNodeSpace:oldTouchLocation];

    CGPoint translation = ccpSub(touchLocation, oldTouchLocation);
    [self panForTranslation:translation];

    if (CGRectIntersectsRect(selSprite.boundingBox, eJar.boundingBox)) {

    selSprite.userData = FALSE;
    selSprite.visible = FALSE;
    selSprite.position = ccp(winSize.width +40, winSize.height + 40);
    _currentFlies--;
    ffinjar++;

 }

何らかの理由で、これにより ffinjar は 1 ではなく 4 を加算します。しかし、_currentFlies は 1 を減算するだけです。私にはわかりません。誰かが私が間違っているかもしれないことを見ることができますか?

4

1 に答える 1

1

これは、宣言がポインターであり、ポインターをインクリメントすることは、intをインクリメントすることとは異なる意味を持つためです(IIRC、sizeof(int)でインクリメントしますが、わかりません)。

int *ffinjar;
// perhaps should be
int ffinjar;

編集:私はテストを行いましたが、実際に int へのポインターをインクリメントすると、システムに 4 が追加されます (sizeof(int) も 4 です)。

于 2012-07-04T02:07:12.647 に答える