SKNode.removeFromParent()EXC_BAD_ACCESS

阿克塞尔·吉尔敏(Axel Guilmin)

我在我的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()会使错误消失。

坦克里德·查扎莱特

重要说明:自iOS 8.1以来,此错误已得到纠正,请务必进行更新并确保您的应用程序不适用于iOS 8.0及更高版本。

我发现发生了什么……应该是某个苹果公司的员工犯了一个错误。说明:

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

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

println( sprite == sprite2 ) // Returns "true"
// Then crash

如果您这样做:

let sprite = SKSpriteNode(imageNamed:"Spaceship")
sprite.name = "1"
self.addChild(sprite)

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

println( sprite == sprite2 ) // Returns "false"
// Then all is right, no crash

我想很简单,当您调用.removeFromParent()Apple的代码时,==就像在Objective-C中一样检查代码是否相等但是由于它是Swift,因此您应该===检查对象是否相等而不是==,这是一个愚蠢的错误。

恭喜,您在SpriteKit代码中发现了一个错误,请在Apple:D处填写表格

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SKNode上的removeFromParent是否会破坏实例?

来自分类Dev

SKNode上的removeFromParent是否会破坏实例?

来自分类Dev

调试EXC_BAD_ACCESS

来自分类Dev

NSDictionary EXC_BAD_ACCESS

来自分类Dev

AFHTTPRequestOperationManager的EXC_BAD_ACCESS

来自分类Dev

EXC_BAD_ACCESS在mergeChangesFromContextDidSaveNotification

来自分类Dev

SKTexture EXC_BAD_ACCESS

来自分类Dev

EXC_BAD_ACCESS StringWithFormat

来自分类Dev

EXC_BAD_ACCESS on iOS 8.1 with Dictionary

来自分类Dev

GCD / NSOperationQueue EXC_BAD_ACCESS

来自分类Dev

UIAlertController EXC_BAD_ACCESS错误-Swift

来自分类Dev

指向函数头的EXC_BAD_ACCESS

来自分类Dev

生成nspredicate时EXC_BAD_ACCESS

来自分类Dev

iOS EXC_BAD_ACCESS:如何调试?

来自分类Dev

迅速细分错误(EXC_BAD_ACCESS)

来自分类Dev

如何从EXC_BAD_ACCESS中恢复?

来自分类Dev

CGContextDrawLinearGradient导致EXC_BAD_ACCESS

来自分类Dev

CCHmac上的EXC_BAD_ACCESS

来自分类Dev

使用NativeCSS时EXC_BAD_ACCESS

来自分类Dev

在AVAssetReader中获取Exc_Bad_access

来自分类Dev

来自Apple Subthread的EXC_BAD_ACCESS

来自分类Dev

[UICollectionView setCollectionViewLayout:]上的EXC_BAD_ACCESS

来自分类Dev

使用协议组成的EXC_BAD_ACCESS

来自分类Dev

viewForAnnotation中的EXC_BAD_ACCESS

来自分类Dev

NSTableView与源,导致EXC_BAD_ACCESS

来自分类Dev

Swift中的UIWebView:exc_bad_access

来自分类Dev

MIDINetworkConnection EXC_BAD_ACCESS错误

来自分类Dev

Swift:animator()导致EXC_BAD_ACCESS

来自分类Dev

EXC_BAD_ACCESS Sprite套件