- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我注意到我的 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()
}
}
它在应用程序启动前崩溃,我能看到的是:
我的配置是 xCode6-Beta6,配备 iOS8-Beta5 和 OSX 10.9.4 的 iPad Mini Retina。我还在模拟器中重现了这个错误;使用 xCode6-Beta5;并在 touchesBegan
方法中移动代码
取消注释行 sprite.removeFromParent()
使错误消失。
最佳答案
重要提示:自 iOS 8.1 以来,此错误已得到纠正,请务必更新并使您的应用无法用于 iOS 8.0 及更早版本。
我发现发生了什么...应该是某些 Apple 员工犯了错误。解释:
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< 中所做的那样/em>。但由于它是 Swift,您应该执行 ===
来检查对象相等性 而不是 ==
,所以愚蠢的错误。
恭喜你在 SpriteKit 代码中发现了一个错误,go fill a form at Apple :D
关于ios - SKNode.removeFromParent() EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25406872/
我有一个方法可以创建一条应该增加分数的线,并且该方法会间隔调用,只要有两条或更多条相同的线,只要英雄接触到离他最近的线,我就会运行removeFromParent Action 和最远的线被移除。但是
我对函数 removeFromParent 的行为真的很奇怪 lazy var buttonAds: SKSpriteNode = { let n = SKSpriteNode(imageName
我正在为我的一个项目创建一个 JTree,一些节点的名称会动态更改,并且我正在使用此函数更新树: public void updateTree() { for (Sprite spr : sp
我在我的 GameScene 中的随机位置加载了多个 SpriteNode,但实际上是同一个 SpriteNode 添加了多次。我在 touchesEnded 中有一个函数,一旦在与 SpriteNo
我想在我点击场景中的按钮时删除 Sprite 。该按钮仅在玩家与元素发生碰撞时启用。这是添加和删除 Sprite 的代码: var imageShown = false var imageForRid
我注意到我的 Swift 项目中有一个奇怪的行为,并以这种方式在一个空的 SpriteKit 项目中重现了它: class GameScene: SKScene { override func
我的 SpriteKit 游戏中有一个随机生成对象副本的循环,我想使用 removeFromParent() 来删除接触到的对象。但是,当我将它添加到代码中时,该对象并没有被删除。这是生成我的对象的循
阅读 Apple 关于 removeFromParent 的文档说: “从其父节点中删除接收节点。” 这是否意味着节点被销毁了?我是否需要将节点设置为 NULL 以释放其内存? 最佳答案 当没有强引用
我的应用程序根据传入事件动态创建多个 SKNode 和 SKSpriteNode。当我尝试清理过时的节点及其包含的子节点时,我使用node.removeFromParent()。 但是,一旦我尝试在所
我有一个 for 循环实例化 5 个 Sprite for enemy in 1...5 { negativeOnComing = SKSpriteNode(imageNamed: "Enem
在 Swift 中有什么方法可以告诉我什么时候 SKSpriteNode 实际上已经从场景中移除了吗?我不认为它实际上是在调用 removeFromParent 时完成的,但我认为它是稍后完成的,当
subview Controller 可以“解雇自己”吗? ..... 你有一个 View Controller “RedMessage”。你有一个普通的 strong 属性...... @prope
在下面的代码中,如果我按下 removeButton 按钮会消失,但它仍然有效。也许我应该让 if 语句为假,但我不知道该怎么做。 class GameScene : SKScene { va
在我的游戏中,我希望每次我的玩家触摸一个物体时,屏幕都会变白约 0.5 秒,然后恢复正常。 我的代码是: private var crash: SKSpriteNode? func crashadd(
方法 .removeFromParent() 不会移除 Sprite 。怎么了? override func touchesBegan(touches: Set, withEvent event: U
我有一个 SKShapeNode 和一个子 SKEmitterNode。我附加了一个 SKAction 序列,其中最后一个操作是 removeFromParent。节点在没有发射器的情况下表现正确,执
我已将 iPad Air 更新到 7.1,将 Xcode 更新到 5.1。 Xcode 想将我的项目更新为推荐的设置,我同意了。 之后,当我从父节点中删除节点时,我的游戏开始在几个地方崩溃。 这对我来
本文整理了Java中com.ait.lienzo.client.core.shape.wires.WiresShape.removeFromParent()方法的一些代码示例,展示了WiresShap
我有一个 test.c 文件,其中有这个函数调用: functiontest(2,x); 我想删除这个函数调用(通过 llvm 传递),当我尝试像这样使用 removeFromParent() 函数时
我是一名优秀的程序员,十分优秀!