Swift、SpriteKit 和带有 CGPoint 的多维数组
Posted
技术标签:
【中文标题】Swift、SpriteKit 和带有 CGPoint 的多维数组【英文标题】:Swift, SpriteKit and multidimensional arrays with CGPoint 【发布时间】:2014-08-14 15:08:12 【问题描述】:在SKSpriteNode
派生类的属性中使用带有CGPoint
的多维数组时出现错误。 仅在这些情况下。
错误是:
我尝试使用EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)
double
→ 工作
我尝试使用 CGPoint
作为函数内部的变量 → 工作
我尝试了使用不是从 SKSpriteNode
派生的类的失败代码 → 工作
Xcode 6.0 测试版 2
有什么想法吗?
这是我的测试代码:
import SpriteKit
class TestSprite: SKSpriteNode
var myOuterArray = Array<Array<CGPoint>>()
var myOuterDoubleArray = Array<Array<Double>>()
init()
super.init(texture:nil, color:UIColor.clearColor(), size: CGSizeZero)
self.testWithInnerArray()
self.testWithOuterArray()
self.testWithOuterDoubleArray()
// breaks
func testWithOuterArray()
myOuterArray.append(Array(count:1, repeatedValue:CGPoint())) // << ERROR!
println("myOuterArray.count : \(myOuterArray.count)")
// works
func testWithOuterDoubleArray()
myOuterDoubleArray.append(Array(count:1, repeatedValue:Double()))
println("myOuterDoubleArray.count : \(myOuterDoubleArray.count)")
// works
func testWithInnerArray()
var myInnerArray = Array<Array<CGPoint>>()
myInnerArray.append(Array(count:1, repeatedValue:CGPoint()))
println("myInnerArray.count : \(myInnerArray.count)")
【问题讨论】:
EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP,subcode =0x0) on Swift when working with multi-dimensional arrays的可能重复 您的代码对我来说很好用。我相信这是一个 Swift 编译器错误。 我刚刚验证了 ios 8、Seed 3 (Build 12A4318c) 上的步骤。我仍然可以遇到这个问题。你运行代码@pasta12 了吗? 我在操场上试过,但对我也不起作用。只有你说的testWithOuterArray()
函数。
Runtime error when using CoreFoundation objects in a swift NSObject subclass的可能重复
【参考方案1】:
它已在 Xcode 的更高版本中修复。问题不再出现。
【讨论】:
以上是关于Swift、SpriteKit 和带有 CGPoint 的多维数组的主要内容,如果未能解决你的问题,请参考以下文章
将 AcceptMouseMovedEvents 用于带有 Storyboard 和 Swift 的 SpriteKit 鼠标操作
如何使用 swift 使用带有 spriteKit 的情节提要
Swift/SpriteKit - ApplyImpluse 的速度是不是以增量方式工作(每次都添加到先前的值)?