Skip to content

Commit e52a135

Browse files
committed
fix(dispose): removing the disposed for ios
1 parent 9465d85 commit e52a135

File tree

1 file changed

+1
-83
lines changed

1 file changed

+1
-83
lines changed

ios/ReferencedAssetLoader.swift

Lines changed: 1 addition & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ func createAssetFileError(_ assetName: String) -> NitroRiveError {
2929
}
3030

3131
final class ReferencedAssetLoader {
32-
private var isDisposed = false
3332
private let cacheQueue = DispatchQueue(label: "com.rive.assetCache", attributes: .concurrent)
3433

3534
private func handleRiveError(error: Error) {
@@ -126,12 +125,6 @@ final class ReferencedAssetLoader {
126125
private func downloadUrlAsset(
127126
url: String, listener: @escaping (Data) -> Void, onError: @escaping () -> Void
128127
) {
129-
// Check if disposed before starting download
130-
guard !isDisposed else {
131-
logDebug("Loader is disposed, skipping download: \(url)")
132-
onError()
133-
return
134-
}
135128

136129
guard isValidUrl(url) else {
137130
handleInvalidUrlError(url: url)
@@ -142,12 +135,6 @@ final class ReferencedAssetLoader {
142135
if let fileUrl = URL(string: url), fileUrl.scheme == "file" {
143136
do {
144137
let data = try Data(contentsOf: fileUrl)
145-
// Check again before calling listener
146-
guard !isDisposed else {
147-
logDebug("Loader disposed before calling listener for file: \(url)")
148-
onError()
149-
return
150-
}
151138
listener(data)
152139
} catch {
153140
handleInvalidUrlError(url: url)
@@ -158,12 +145,6 @@ final class ReferencedAssetLoader {
158145

159146
// Check cache first for HTTP/HTTPS URLs
160147
if let cachedData = getCachedAsset(url) {
161-
// Check again before calling listener
162-
guard !isDisposed else {
163-
logDebug("Loader disposed before calling listener for cached: \(url)")
164-
onError()
165-
return
166-
}
167148
listener(cachedData)
168149
return
169150
}
@@ -184,27 +165,13 @@ final class ReferencedAssetLoader {
184165
return
185166
}
186167

187-
// Check if disposed
188-
guard !self.isDisposed else {
189-
self.logDebug("Loader disposed during download: \(url)")
190-
onError()
191-
return
192-
}
193-
194168
if let error = error {
195169
self.handleInvalidUrlError(url: url)
196170
onError()
197171
} else if let data = data {
198172
// Save to cache
199173
self.saveToCache(url, data: data)
200174

201-
// Final check before calling listener
202-
guard !self.isDisposed else {
203-
self.logDebug("Loader disposed before calling listener: \(url)")
204-
onError()
205-
return
206-
}
207-
208175
listener(data)
209176
} else {
210177
onError()
@@ -217,20 +184,14 @@ final class ReferencedAssetLoader {
217184
private func processAssetBytes(
218185
_ data: Data, asset: RiveFileAsset, factory: RiveFactory, completion: @escaping () -> Void
219186
) {
220-
// Check if disposed before processing
221-
guard !isDisposed else {
222-
logDebug("Loader is disposed, skipping asset processing: \(asset.name())")
223-
completion()
224-
return
225-
}
226187

227188
if data.isEmpty == true {
228189
completion()
229190
return
230191
}
231192

232193
DispatchQueue.global(qos: .background).async { [weak self] in
233-
guard let self = self, !self.isDisposed else {
194+
guard let self = self else {
234195
DispatchQueue.main.async {
235196
completion()
236197
}
@@ -241,22 +202,12 @@ final class ReferencedAssetLoader {
241202
case let imageAsset as RiveImageAsset:
242203
let decodedImage = factory.decodeImage(data)
243204
DispatchQueue.main.async { [weak self] in
244-
// Final check before rendering on main thread
245-
guard let self = self, !self.isDisposed else {
246-
completion()
247-
return
248-
}
249205
imageAsset.renderImage(decodedImage)
250206
completion()
251207
}
252208
case let fontAsset as RiveFontAsset:
253209
let decodedFont = factory.decodeFont(data)
254210
DispatchQueue.main.async { [weak self] in
255-
// Final check before rendering on main thread
256-
guard let self = self, !self.isDisposed else {
257-
completion()
258-
return
259-
}
260211
fontAsset.font(decodedFont)
261212
completion()
262213
}
@@ -268,11 +219,6 @@ final class ReferencedAssetLoader {
268219
return
269220
}
270221
DispatchQueue.main.async { [weak self] in
271-
// Final check before rendering on main thread
272-
guard let self = self, !self.isDisposed else {
273-
completion()
274-
return
275-
}
276222
audioAsset.audio(decodedAudio)
277223
completion()
278224
}
@@ -304,20 +250,10 @@ final class ReferencedAssetLoader {
304250
_ sourceUrl: String, asset: RiveFileAsset, factory: RiveFactory,
305251
completion: @escaping () -> Void
306252
) {
307-
// Check if disposed before processing
308-
guard !isDisposed else {
309-
logDebug("Loader is disposed, skipping handleSourceUrl: \(sourceUrl)")
310-
completion()
311-
return
312-
}
313253

314254
downloadUrlAsset(
315255
url: sourceUrl,
316256
listener: { [weak self] data in
317-
guard let self = self, !self.isDisposed else {
318-
completion()
319-
return
320-
}
321257
self.processAssetBytes(data, asset: asset, factory: factory, completion: completion)
322258
}, onError: completion)
323259
}
@@ -379,12 +315,6 @@ final class ReferencedAssetLoader {
379315
source: ResolvedReferencedAsset, asset: RiveFileAsset, factory: RiveFactory,
380316
completion: @escaping () -> Void
381317
) {
382-
// Check if disposed before starting
383-
guard !isDisposed else {
384-
logDebug("Loader is disposed, skipping asset load: \(asset.name())")
385-
completion()
386-
return
387-
}
388318

389319
let sourceAssetId = source.sourceAssetId
390320
let sourceUrl = source.sourceUrl
@@ -421,11 +351,6 @@ final class ReferencedAssetLoader {
421351
}
422352

423353
return { [weak self] (asset: RiveFileAsset, data: Data, factory: RiveFactory) -> Bool in
424-
guard let self = self, !self.isDisposed else {
425-
self?.logDebug("Loader is disposed, skipping loadContents for: \(asset.name())")
426-
return false
427-
}
428-
429354
// Check for CDN URL/UUID first (only if both are non-empty)
430355
let cdnUuid = asset.cdnUuid()
431356
let cdnBaseUrl = asset.cdnBaseUrl()
@@ -437,9 +362,6 @@ final class ReferencedAssetLoader {
437362
if let cachedData = cached {
438363
// Use cached version
439364
DispatchQueue.global(qos: .background).async {
440-
guard !self.isDisposed else {
441-
return
442-
}
443365
self.processAssetBytes(cachedData, asset: asset, factory: factory, completion: {})
444366
}
445367
cache.value[asset.uniqueName()] = asset
@@ -474,8 +396,4 @@ final class ReferencedAssetLoader {
474396
return true
475397
}
476398
}
477-
478-
func dispose() {
479-
isDisposed = true
480-
}
481399
}

0 commit comments

Comments
 (0)