diff --git a/Sources/RDReaderView/ReaderView/Paging/RDReaderPreloadController.swift b/Sources/RDReaderView/ReaderView/Paging/RDReaderPreloadController.swift index 20f7f32..293b4b3 100644 --- a/Sources/RDReaderView/ReaderView/Paging/RDReaderPreloadController.swift +++ b/Sources/RDReaderView/ReaderView/Paging/RDReaderPreloadController.swift @@ -66,6 +66,10 @@ final class RDReaderPreloadController { } func invalidate(environment: Environment) { + RDReaderTapDebug.log( + "PreloadController.invalidate", + "clearing pageCurlCached=\(pageCurlCachedViews.keys.sorted()) preloaded=\(preloadedPageViews.keys.sorted())" + ) pageCurlCachedViews.values.forEach { $0.removeFromSuperview() } preloadedPageViews.values.forEach { $0.removeFromSuperview() } pageCurlCachedViews.removeAll() @@ -81,8 +85,16 @@ final class RDReaderPreloadController { let view: UIView if let reusableView = detachedReusablePageView(for: pageNum) { view = reusableView + RDReaderTapDebug.log( + "PreloadController.pageViewForDisplay", + "cache HIT page=\(pageNum) view=\(RDReaderTapDebug.describe(reusableView))" + ) } else { view = contentViewProvider(pageNum, nil) ?? UIView() + RDReaderTapDebug.log( + "PreloadController.pageViewForDisplay", + "cache MISS page=\(pageNum) created=\(RDReaderTapDebug.describe(view))" + ) } if shouldCache(view: view, for: pageNum, environment: environment) { pageCurlCachedViews[pageNum] = view @@ -95,6 +107,10 @@ final class RDReaderPreloadController { func takePreloadedView(for pageNum: Int) -> UIView? { let preloaded = preloadedPageViews.removeValue(forKey: pageNum) preloaded?.removeFromSuperview() + RDReaderTapDebug.log( + "PreloadController.takePreloadedView", + "cache \(preloaded == nil ? "MISS" : "HIT") page=\(pageNum) view=\(RDReaderTapDebug.describe(preloaded))" + ) return preloaded } @@ -118,10 +134,22 @@ final class RDReaderPreloadController { let contentView: UIView if let existing = preloadedPageViews[targetPage], existing.superview === preloadHostView { contentView = existing + RDReaderTapDebug.log( + "PreloadController.prime", + "cache HIT(preloaded) page=\(targetPage) view=\(RDReaderTapDebug.describe(existing))" + ) } else if let cached = pageCurlCachedViews.removeValue(forKey: targetPage), cached.superview == nil { contentView = cached + RDReaderTapDebug.log( + "PreloadController.prime", + "cache HIT(pageCurl) page=\(targetPage) view=\(RDReaderTapDebug.describe(cached))" + ) } else { contentView = contentViewProvider(targetPage, nil) ?? UIView() + RDReaderTapDebug.log( + "PreloadController.prime", + "cache MISS page=\(targetPage) created=\(RDReaderTapDebug.describe(contentView))" + ) } let shouldCacheContentView = shouldCache(view: contentView, for: targetPage, environment: environment) if shouldCacheContentView {