diff --git a/Split.xcodeproj/project.pbxproj b/Split.xcodeproj/project.pbxproj index 719ea7233..806ebf9b0 100644 --- a/Split.xcodeproj/project.pbxproj +++ b/Split.xcodeproj/project.pbxproj @@ -5286,7 +5286,7 @@ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 6.0; TVOS_DEPLOYMENT_TARGET = 15.4; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -5352,7 +5352,7 @@ SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 6.0; TVOS_DEPLOYMENT_TARGET = 15.4; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -5397,7 +5397,7 @@ SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 6.0; TARGETED_DEVICE_FAMILY = "1,2,3,6"; TVOS_DEPLOYMENT_TARGET = 12.0; USER_HEADER_SEARCH_PATHS = ""; @@ -5440,7 +5440,7 @@ SWIFT_INCLUDE_PATHS = ""; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 6.0; TARGETED_DEVICE_FAMILY = "1,2,3,4"; TVOS_DEPLOYMENT_TARGET = 12.0; USER_HEADER_SEARCH_PATHS = ""; @@ -5471,7 +5471,7 @@ SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 6.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -5498,7 +5498,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 6.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -5583,7 +5583,7 @@ SUPPORTED_PLATFORMS = "watchsimulator watchos"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_INCLUDE_PATHS = ""; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 6.0; TARGETED_DEVICE_FAMILY = 4; TVOS_DEPLOYMENT_TARGET = 9.0; WATCHOS_DEPLOYMENT_TARGET = 7.0; @@ -5626,7 +5626,7 @@ SUPPORTED_PLATFORMS = "watchsimulator watchos"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_INCLUDE_PATHS = ""; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 6.0; TARGETED_DEVICE_FAMILY = 4; TVOS_DEPLOYMENT_TARGET = 9.0; WATCHOS_DEPLOYMENT_TARGET = 7.0; diff --git a/Split/Api/DefaultSplitFactoryBuilder.swift b/Split/Api/DefaultSplitFactoryBuilder.swift index dd614a8e2..a3e23a353 100644 --- a/Split/Api/DefaultSplitFactoryBuilder.swift +++ b/Split/Api/DefaultSplitFactoryBuilder.swift @@ -33,11 +33,7 @@ import Foundation (Singleton pattern) and reusing it throughout your application. """ - #if swift(>=6.0) - nonisolated(unsafe) private static let factoryMonitor: FactoryMonitor = { DefaultFactoryMonitor() }() - #else - private static let factoryMonitor: FactoryMonitor = { DefaultFactoryMonitor() }() - #endif + private static let factoryMonitor: FactoryMonitor = { DefaultFactoryMonitor() }() public override init() { keyValidator = DefaultKeyValidator() diff --git a/Split/Common/Validators/FactoryMonitor.swift b/Split/Common/Validators/FactoryMonitor.swift index 8bd30d774..ca13f4c61 100644 --- a/Split/Common/Validators/FactoryMonitor.swift +++ b/Split/Common/Validators/FactoryMonitor.swift @@ -12,7 +12,7 @@ struct WeakFactory { private(set) weak var factory: SplitFactory? } -class FactoryRegistry { +final class FactoryRegistry: @unchecked Sendable { private var queue: DispatchQueue private var weakFactories: [String: [WeakFactory]] @@ -79,16 +79,16 @@ class FactoryRegistry { } } -protocol FactoryMonitor { +protocol FactoryMonitor: Sendable { var allCount: Int { get } func instanceCount(for apiKey: String) -> Int func activeCount() -> Int func register(instance: SplitFactory?, for apiKey: String) } -class DefaultFactoryMonitor: FactoryMonitor { +final class DefaultFactoryMonitor: FactoryMonitor { - var factoryRegistry: FactoryRegistry + nonisolated(unsafe) var factoryRegistry: FactoryRegistry var allCount: Int { return factoryRegistry.count