Skip to content

Commit 29de2ca

Browse files
authored
fix: keep fileRef alive until the customLoaders finished (#45)
1 parent 9d74ad4 commit 29de2ca

2 files changed

Lines changed: 10 additions & 3 deletions

File tree

ios/HybridRiveFileFactory.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,20 @@ final class HybridRiveFileFactory: HybridRiveFileFactorySpec, @unchecked Sendabl
3636

3737
let referencedAssetCache = SendableRef(ReferencedAssetCache())
3838
let factoryCache: SendableRef<RiveFactory?> = .init(nil)
39+
let fileRef: SendableRef<RiveFile?> = .init(nil)
3940
let customLoader = self.assetLoader.createCustomLoader(
4041
referencedAssets: referencedAssets, cache: referencedAssetCache,
41-
factory: factoryCache)
42+
factory: factoryCache,
43+
fileRef: fileRef
44+
)
4245

4346
let riveFile =
4447
if let customLoader = customLoader {
4548
try fileWithCustomAssetLoader(prepared, customLoader)
4649
} else {
4750
try file(prepared)
4851
}
52+
fileRef.value = riveFile
4953

5054
let result = (
5155
file: riveFile, cache: referencedAssetCache.value, factory: factoryCache.value,

ios/ReferencedAssetLoader.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,8 @@ final class ReferencedAssetLoader {
227227

228228
func createCustomLoader(
229229
referencedAssets: ReferencedAssetsType?, cache: SendableRef<ReferencedAssetCache>,
230-
factory factoryOut: SendableRef<RiveFactory?>
230+
factory factoryOut: SendableRef<RiveFactory?>,
231+
fileRef: SendableRef<RiveFile?>
231232
)
232233
-> LoadAsset?
233234
{
@@ -244,7 +245,9 @@ final class ReferencedAssetLoader {
244245
cache.value[asset.uniqueName()] = asset
245246
factoryOut.value = factory
246247

247-
self.loadAssetInternal(source: assetData, asset: asset, factory: factory, completion: {})
248+
self.loadAssetInternal(source: assetData, asset: asset, factory: factory, completion: {
249+
withExtendedLifetime(fileRef) {}
250+
})
248251

249252
return true
250253
}

0 commit comments

Comments
 (0)