From 59d79560b6a9a92264dfdefdb26336b9a2efc134 Mon Sep 17 00:00:00 2001 From: Markus Hardt Date: Fri, 31 Jul 2026 12:07:58 +0200 Subject: [PATCH] Create the CLLocationManager instance on the main thread Delegate methods need to have a thread with an RunLoop. --- Sources/SkipKit/PermissionManager.swift | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Sources/SkipKit/PermissionManager.swift b/Sources/SkipKit/PermissionManager.swift index e529307..e4d4256 100644 --- a/Sources/SkipKit/PermissionManager.swift +++ b/Sources/SkipKit/PermissionManager.swift @@ -395,7 +395,15 @@ class LocationDelegate: NSObject { static let accuracyAuthorizationReducedAccuracy = 1 /// The shared `CLLocationManager` instance, or nil if the CoreLocation framework could not be loaded - lazy var locationManager: NSObject? = LocationDelegate.locationManagerClass()?.init() + lazy var locationManager: NSObject? = { + if Thread.isMainThread { + return LocationDelegate.locationManagerClass()?.init() + } else { + return DispatchQueue.main.asyncAndWait { + LocationDelegate.locationManagerClass()?.init() + } + } + }() var continuation: CheckedContinuation?