【问题标题】:EXC_BAD_INSTRUCTION runtime errorEXC_BAD_INSTRUCTION 运行时错误
【发布时间】: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
    // ...
}

【问题讨论】:

    标签: ios xcode swift


    【解决方案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有解决办法。

    【讨论】:

    • 是的,您要在其中将单元格出列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    相关资源
    最近更新 更多