项目地址 https://github.com/leancloud/swift-sdk-demo

比如在SettingsViewController里面:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section {
case 0:
if let _ = Client.current.tag {
return 4
} else {
return 3
}
case 1:
return 1
case 2:
return 1
default:
fatalError()
}
}
假如在特定情况下,此前的clientInitializing过程被打断,那么Client.current里的current值为nil,如果执行SettingsViewController,上面的 case 0不会返回3,而是会导致崩溃。

具体是什么情况呢?是人为修改代码后出现的吗?

current默认类型是IMClient!,最好改成IMClient?
我找了半天崩溃原因,原来是因为current后面没有加问号(demo里Client.current.tag是不加问号的),最好默认类型是IMClient?,减少出错

如果是修改代码后才出现该问题,那这个问题就应该是人为修改代码导致的,并不属于 Demo 的 bug。