Guys, how can I resolve this problem? What I need ...
# multiplatform
d
Guys, how can I resolve this problem? What I need to import?
Unresolved reference: WeakReference
d
WeakReference
is a class from JDK, it can only be used in Java modules.
s
d
Which module is it needed to import ?
r
You should provide more details about what you’re doing. Where did you put that reference that is unresolved?
If you’re in
common
sourceSet and only have
jvm/android
and
native/ios
targets, you can just use
expect class WeakReference<T: Any>
somewhere in your common code I guess
d
In commonMain module
r
I you have a
js
target you can’t use
WeakReference
d
Ok. Thx. I got it
Why WeakReference has method
clear
? I thought it must work automatically
r
Weak reference doesn’t mean no reference
d
I must call
clear
directly?
d
No.
d
If I use
expect class WeakReference<T: Any>
I get issue that
It has no actual declaration in module iosMain for Native
=(
r
You need a typealias
actual typealias WeakReference<T> = kotlin.native.ref.WeakReference<T>
And on the JVM side
actual typealias WeakReference<T> = java.lang.ref.WeakReference<T>
You probably need to add things like a
get
function etc
d
hmm, strange I think It must be simpler
Does somebody know example of using WeakReference in common module ?
r
What’s so hard?
Copy code
// Common
expect class WeakReference<T: Any> {
    fun get(): T?
}

// JVM/Android
actual typealias WeakReference<T> = java.lang.ref.WeakReference<T>

// Native/iOS
actual typealias WeakReference<T> = kotlin.native.ref.WeakReference<T>
👍 1