为什么下面方法的第一行给我一个EXC_BAD_INSTRUCTION
运行时错误?
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cellIdentifier = NSStringFromClass(MessageCell)
var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as MessageCell
// ...
}
最佳答案
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)