Kotlin“也”功能在Android Studio中奇怪的警告

时间:2019-07-26 18:10:02

标签: android android-studio kotlin

大概有两个片段:

// Verbose version
val typedArray = context.obtainStyledAttributes(attrs, styleable)
block(typedArray)
typedArray.recycle()
// One-line version
context.obtainStyledAttributes(attrs, styleable).also(block).recycle()

我想知道为什么冗长的代码块在Android Studio中看起来不错,而单行版本突出显示 obtainStyledAttributes 并给出以下警告:

  

此TypedArray应与#recycle()一起使用后再利用

有人知道这仅仅是一个Android Studio的绒毛检查缺陷,还是单行版本实际上有问题?

1 个答案:

答案 0 :(得分:2)

这有点猜测,但是我相信这是因为静态分析工具无法保证TypedArray返回的also()与{{1返回的实例}}。它看到获得了TypedArray,但不能保证将其回收,因此发出警告。

我会毫不犹豫地称它为短毛绒中的错误(或“缺陷”),但这确实意味着在这种情况下可以忽略警告。