2014-02-25 96 views
0

我試圖添加一個10計數循環到我的遊戲,但是當我運行代碼時,它會生成一個「變量不可分配missing__block」錯誤消息。任何人都可以告訴我哪裏錯了,並指出我在正確的方向嗎?變量不能分配missing__block

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    CGPoint currentLocation = [[touches anyObject] locationInNode:self]; 
    CGPoint previousLocation = [[touches anyObject] previousLocationInNode:self]; 
    CGRect shipRect = _ship.frame; 
    if (CGRectContainsPoint(shipRect, previousLocation)) 
    { 
     [self launch:10 p1:currentLocation p2:previousLocation rect1:shipRect]; 
    } 
} 

-(void)launch:(int)count p1:(CGPoint) currentLocation p2:(CGPoint) previousLocation rect1:(CGRect) shipRect 
{ 
    CGPoint lvPosition = CGPointMake(_ship.position.x - (previousLocation.x - currentLocation.x), _ship.position.y); 
_ship.position = lvPosition; 

    SKAction *sound = [SKAction playSoundFileNamed:@"slideup.mp3" waitForCompletion:NO]; 
    SKAction *moveNode = [SKAction moveByX:lvPosition.x y:10.0 duration:3.0]; 

    [_ship runAction: sound]; 
    [_ship runAction: moveNode completion:^{[self launch:count-- p1:currentLocation p2:previousLocation rect1:shipRect];}]; /*variable not assignable missing__block error*/ 

} 
+0

更改參數是不好的主意,不管是否阻止,你都應該避免它 – sage444

+0

你說你正在嘗試添加一個循環,但是代碼示例中沒有循環。你錯過了錯誤的東西嗎? – CRD

回答

1

我認爲你正試圖去遞減沒有被定義爲__block變量count。您必須聲明要與__block塊內改變每個變量,例如__block int count;

[編輯] 你的情況最簡單的解決方法是ASIGN count-1的遞歸調用,因爲你並不需要的結果count--稍後

0

__block局部變量不能在塊中分配。

但是,使它__block可能不是你想要的。方法名稱runAction:completion:聽起來好像它會在動作完成後調用「完成」塊一次。由於它被調用一次,並且此後不使用count,所以後減量是毫無意義的。