3

Swift プロジェクトで奇妙な動作に気付き、空の SpriteKit プロジェクトでそれを再現しました。

class GameScene: SKScene {
    override func didMoveToView(view: SKView) {

        let sprite = SKSpriteNode(imageNamed:"Spaceship")
        self.addChild(sprite)
        //sprite.removeFromParent()

        let sprite2 = SKSpriteNode(imageNamed:"Spaceship")
        self.addChild(sprite2)
        sprite2.removeFromParent()
    }
}

アプリが起動する前にクラッシュし、私が見ることができるのはこれだけです: xCodeのスクリーンショット

私の構成は xCode6-Beta6、iOS8-Beta5 および OSX 10.9.4 を搭載した iPad Mini Retina です。シミュレーターでもバグを再現しました。xCode6-Beta5; コードをtouchesBeganメソッドに移動する

行のコメントsprite.removeFromParent()を外すと、バグが消えます。

4

2 に答える 2

0

これは、SKNode の名前とクラスが同じ場合にのみ発生します。SKNode の一意の名前に設定します。

マイ コード: - (void) removeItemWithIdentifier:(FoodsIdentifiers) identifier{

NSArray *items = [foodItemHolderNode children];
int count = (int)[items count];
for (int i = 0; i < count; i++) {
    FoodItemObject *foodItem = [items objectAtIndex:i];
    int itemID = [[foodItem.objectDictionary objectForKey:FOODITEM_IDENTIFIER_KEY] intValue];

    if (itemID == identifier) {
        [foodItem removeFromParent];
        break;
    }

}

// NSString *name = [NSString stringWithFormat:@"ID%i", (int)identifier];
//SKNode *item = [foodItemHolderNode childNodeWithName:name];
//[item removeFromParent];

警告 同じ名前のバグを持つ親から削除!!!!!!!!

于 2014-09-11T10:35:51.103 に答える