Open
Description
Edit: something I have found useful. Refactored to not use finalize()
, and added links. Essentially:
import java.lang.ref.Cleaner;
class SwiftHeapObjectHolder implements AutoCloseable {
private static final Cleaner cleaner = Cleaner.create();
private final Cleaner.Cleanable _cleanable;
public long _swiftHeapObject;
public SwiftHeapObjectHolder(long heapObjectInt64Ptr) {
final Runnable F = () -> SwiftHeapObjectHolder._releaseSwiftHeapObject(heapObjectInt64Ptr);
SwiftHeapObjectHolder._retainSwiftHeapObject(heapObjectInt64Ptr);
_cleanable = cleaner.register(this, F);
_swiftHeapObject = heapObjectInt64Ptr;
}
@Override
public void close() throws Exception {
_swiftHeapObject = 0;
_cleanable.clean();
}
static native void _retainSwiftHeapObject(long heapObjectInt64Ptr);
static native void _releaseSwiftHeapObject(long heapObjectInt64Ptr);
}
https://github.com/PADL/FlutterSwift/blob/main/Sources/FlutterAndroid/com/padl/FlutterAndroid/SwiftHeapObjectHolder.java
https://github.com/PADL/FlutterSwift/blob/main/Sources/FlutterAndroid/SwiftHeapObjectHolderNativeMethods.swift