我在 Playground 上有一个带有 Swift 2.1.1 的 EXC_BAD_INSTRUCTION,需要帮助来识别它
Posted
技术标签:
【中文标题】我在 Playground 上有一个带有 Swift 2.1.1 的 EXC_BAD_INSTRUCTION,需要帮助来识别它【英文标题】:I have a EXC_BAD_INSTRUCTION with Swift 2.1.1 on Playground and need help to identify it 【发布时间】:2016-01-11 19:00:08 【问题描述】:这是我的游乐场代码:
import UIKit
class CellularAutomata
var array = Array(count:1, repeatedValue:Array(count: 1, repeatedValue: Bool()))
var chanceToStartAlive = 0.45
var width = 384
var height = 384
init()
self.array = Array(count:self.width, repeatedValue:Array(count: self.height, repeatedValue: Bool()))
initialise()
init(chanceToStartAlive chance: Double)
chanceToStartAlive = chance
self.array = Array(count:self.width, repeatedValue:Array(count: self.height, repeatedValue: Bool()))
initialise()
init(chanceToStartAlive chance: Double, width columns: Int, height rows: Int)
chanceToStartAlive = chance
self.array = Array(count:columns, repeatedValue:Array(count: rows , repeatedValue: Bool()))
initialise()
func initialise()
for index in 0...array.count
for jndex in 0...array[index].count
if(randomCGDouble() < self.chanceToStartAlive)
array[index][jndex] = true
func randomCGDouble() -> Double
return Double(arc4random()) / Double(UInt32.max)
在调用 initialise() 函数时会出现错误指令。我觉得我忽略了一些非常明显的事情,当有人向我解释时,我会面无表情。
编辑:对不起大家!我发现我做了一些愚蠢的事情。我需要对数组执行 .count - 1 。就像我说的,面对手掌。一旦我发现您可以在操场上激活控制台并最终可以获得一些错误的输出反馈,我就明白了这一点。
【问题讨论】:
你能发布一些有用的错误信息吗? EXC_BAD_INSTRUCTION 表示出现问题。没有帮助。 你的阵列到底有多大? 查看我的编辑和 luk2302 的回答,了解为什么这是错误的。这是一个如此简单的错误...... 【参考方案1】:您必须将您的 initialise
更改为
func initialise()
print(array.count)
for index in 0..<array.count
for jndex in 0..<array[index].count
if(randomCGDouble() < self.chanceToStartAlive)
array[index][jndex] = true
注意两个循环中的0..<array
,而不是前面的0...array
。这将防止索引超出范围。
请注意,该数组非常大 - 请尝试使用 width
和 height
或 12
对其进行测试。
【讨论】:
是的,这也可以,类似于我在编辑中所做的 请避免使用 C 风格的 for 循环,否则它们会从语言中移除。如您所见,它们容易出错。 @tmpz :据此:github.com/apple/swift-evolution/blob/master/proposals/… 将保留 For-in 循环。正在删除看起来像这样的东西: for var i = 0 ;我 糟糕,我被误导了。以上是关于我在 Playground 上有一个带有 Swift 2.1.1 的 EXC_BAD_INSTRUCTION,需要帮助来识别它的主要内容,如果未能解决你的问题,请参考以下文章
给我看一个带有 Upsurge Playground 的 Xcode 7.2.1 工作区的工作示例?
带有 Cocoapods 的 Xcode Playground
在 Spring Boot 应用程序的生产环境中禁用 GraphiQL Playground