EXC_BAD_INSTRUCTION 运行时错误

Posted

技术标签:

【中文标题】EXC_BAD_INSTRUCTION 运行时错误【英文标题】:EXC_BAD_INSTRUCTION runtime error 【发布时间】:2014-07-02 16:49:45 【问题描述】:

为什么下面方法的第一行给我一个EXC_BAD_INSTRUCTION运行时错误?

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! 
    let cellIdentifier = NSStringFromClass(MessageCell)
    var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as MessageCell
    // ...

【问题讨论】:

【参考方案1】:

Swift 还没有 Obj-C 的自省能力。

class Cell: UITableViewCell 



let a = NSStringFromClass(NSString) // prints NSString
let b = NSStringFromClass(Cell) // prints _TtC11lldb_expr_04Cell
let c = NSStringFromClass(UITableViewCell) // prints UITableViewCell

由于标识符被修改,您尝试将一个不存在的单元出队,这会导致上述错误。

另见Get a user-readable version of the class name in swift (in objc NSStringFromClass was fine)

【讨论】:

猜得好。但是,我实际上在这两个地方都使用了cellIdentifier。不过谢谢。我想通了。【参考方案2】:

实际上,结果第一行是可以的。这是导致崩溃的第二行。 UITableView in Swift有解决办法。

【讨论】:

是的,您要在其中将单元格出列。

以上是关于EXC_BAD_INSTRUCTION 运行时错误的主要内容,如果未能解决你的问题,请参考以下文章

在 XCode 6.1.1 中调试 EXC_BAD_INSTRUCTION 崩溃

致命错误:在展开可选值时意外发现 nil (EXC_BAD_INSTRUCTION)

当我尝试快速加载我的表格视图时,为啥会出现 EXC_BAD_INSTRUCTION 错误?

SwiftUI CoreData MVVM 解决错误“EXC_BAD_INSTRUCTION....”

线程 1:EXC_BAD_INSTRUCTION(代码=EXC_1386_INVOP,子代码=0x0)

为啥我在使用 GCD 时收到错误 EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)