小天管理 发表于 10月4日 发表于 10月4日 大家都知道 Kotlin 有空安全 var s: String 代表不为空 var s: String? 代表可为空 奇葩操作来了,在我接手之前,除了绝大部分的基本变量,其余所有变量都是 String?、Objxx? 使用的时候: if (S != null) print(s) else throw Exption("s shouldn't be null") 或者: if (obj?.s == null) return obj!!.s 一开始很好奇这个脑残写法是怎么来的 然后遇到了一个 crash 我找到根源了。我写的代码里没有用 String? ,但是却报了 NPE ,赋值的地方都查过了,不存在 null 。最终不断地调试发现每次页面 onDestory()的时候会有个反射递归地将所有变量和变量里的变量都设置成 null (说是在手动 GC…)。又因为魔改了生命周期+协程,读取变量的时候已经是 null 了,然后报错== !
已推荐帖子
创建帐户或登录来提出意见
您需要成为会员才能提出意见
创建帐户
注册成为会员.只要几个简单步骤!
注册帐户登录
已经有帐户? 请在此处登录.
现在登录