gpt4 book ai didi

xcode - 如何快速修复 EXC_BAD_INSTRUCTION(code=EXC_1386_INVOP, subcode=0x0)

转载 作者:行者123 更新时间:2023-11-28 06:43:39 25 4
gpt4 key购买 nike

我正在制作图像库,让我能够从我制作的 Collection View 中选择多个图像当我玩得开心时,我的代码避免是好的,但是当我按下选择按钮时,这个错误发生了“EXC_BAD_INSTRUCTION(code=EXC_1386_INVOP, subcode=0x0)”

这是选择按钮的代码

@IBAction func Select(sender: AnyObject) {
var ckeck = AssetCell() as? AssetCell
ckeck!.CheckMarkView1.hidden = false // here it shows an error which is "Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)"
}

我有包含 CheckMarkView1 的 Assetcell 类

最佳答案

当你说 AssetCell() 为? AssetCell 这意味着你的 ckeck 是一个 Optional,这再次意味着它可以是某物,也可以是 nil(无)。

当你在下一行说 ckeck! 时,这意味着你告诉编译器只处理 ckeck 的值,你不关心它是否是否为零。这几乎总是一个坏主意,因为您刚刚通过艰难的方式发现了这一点。

更好的方法是使用if let 语法来解包或使用guard 语法。

所以你可以说:

if let ckeck = ckeck {
ckeck!.CheckMarkView1.hidden = false
}

或者你可以说:

guard let ckeck = ckeck else { return }
ckeck!.CheckMarkView1.hidden = false

这样你就可以确保只在 ckeck 确实有值(value)时才开始使用它。

话虽如此,您实际创建 ckeck 的方式看起来有点奇怪:

var ckeck = AssetCell() as? AssetCell

现在我不知道细节,但你不能直接说

let ckeck = AssetCell()

最后...这个问题已经以各种形式被问过很多次了。我知道当您遇到错误并且不太了解发生了什么时会令人沮丧,但下次您应该开始搜索 EXC_BAD_INSTRUCTION 等。这应该返回很多答案来帮助您解决问题,或者至少帮助您了解正在发生的事情。对不起:)

关于xcode - 如何快速修复 EXC_BAD_INSTRUCTION(code=EXC_1386_INVOP, subcode=0x0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37178591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com