Post not yet marked as solved
Post marked as unsolved with 0 replies, 255 views
I've been trying to use the Xcode 14 beta and the -warn-concurrency flag to make some of our library code concurrency-safe, and I've hit just… too many problems to manage.
A smattering of random data points:
Foundation types that I think should be Sendable, are not:
URL
Notification
...
UIKit constants that should not be @MainActor, are:
UIApplication.willEnterForegroundNotification (it's just a string constant, and NotificationCenter itself is thread-safe)
UIKit types and methods that I think should not be @MainActor, are:
UIDevice, or at least I should be able to do UIDevice.current.systemVersion from any actor
Dispatch is completely concurrency-unaware — I kinda expected it to be unavailable, but instead it's available but doesn't understand swift concurrency
It'd at least be nice if DispatchQueue.main.[a]sync understood that its closure can be @MainActor (perhaps main could return a subclass of DispatchQueue with stronger guarantees?)
SwiftUI Button etc. callbacks aren't marked @MainActor, even though (AFAIK) they are — certainly it's always been legal to update @State vars from them — so it's not legal to call UIKit from them (eg. to present a UIViewController in response to a button press)
When can we expect Apple's SDKs to actually be usable with concurrency checking?