EXC_BAD_INSTRUCTION运行时错误

时间:2014-07-02 16:49:45

标签: ios xcode swift

为什么下面方法中的第一行给出了EXC_BAD_INSTRUCTION运行时错误?

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

实际上,结果第一行还可以。这是导致坠机的第二条线。 UITableView in Swift有解决方案。