@@ -29,7 +29,6 @@ func createAssetFileError(_ assetName: String) -> NitroRiveError {
2929}
3030
3131final 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