Posts

Post not yet marked as solved
2 Replies
2.6k Views
Hello, I’m writing an app that records the position of the user at all time (when he requests it!). I have two questions. I’ve read the doc, and found this Note: When a user disables the Background App Refresh setting either globally or for your app, the significant-change location service doesn’t relaunch your app. Further, while Background App Refresh is off an app doesn’t receive significant-change or region monitoring events even when it's in the foreground. and this Important: A user can explicitly disable background capabilities for any app. If a user disables Background App Refresh in the Settings app—either globally for all apps or for your app in particular—your app is prevented from using any location services in the background. You can determine whether your app can process location updates in the background by checking the value of the backgroundRefreshStatus property of the UIApplication class. First question: Why my app does not appear in Background App Refresh even though I use the significant location change API? Second question: I tested the doc’s statements, and found out my app was revived after being killed when a significant location change occurred. Does anybody know if the doc is out-of-date, or if it never was accurate? (Or if I misunderstood something!)
Posted
by frizlab.
Last updated
.
Post not yet marked as solved
1 Replies
1.8k Views
Context Let say we have an actor, which have a private struct. We want this actor to be reactive, and to give access to a publisher that publishes a specific field of the private struct. The following code seems to work. But I do have questions. public actor MyActor { private struct MyStruct { var publicField: String } @Published private var myStruct: MyStruct? /* We force a non isolated so the property is still accessible from other contexts w/o await in other modules. */ public nonisolated let publicFieldPublisher: AnyPublisher<String?, Never> init() { self.publicFieldPublisher = _myStruct.projectedValue.map{ $0?.publicField }.eraseToAnyPublisher() } } Question 1 & 2 In the init, I use _myStruct.projectedValue, which should be strictly equivalent to $myStruct. Except the latter does not compile. We get the following error: 'self' used in property access '$myStruct' before all stored properties are initialized Why? AFAICT myStruct should be init’d to nil, so where is the problem? And why does the former do compile? Question 3 With _myStruct.projectedValue, I get a warning at compile-time: Actor 'self' can only be passed 'inout' from an async initializer What does that mean? Is it possible to get rid of this warning? Is it “dangerous” (can this cause issues later)? Thanks!
Posted
by frizlab.
Last updated
.
Post marked as solved
1 Replies
485 Views
I don’t mind it, but I don’t understand it. The delegate method for a data task when the session first receives an URL response is asynchronous: it gives a completion handler that must be called in order to provide the response disposition (or is async if _Concurrency is available). What kind of check on the response can be done that justify the response disposition be sent asynchronously?
Posted
by frizlab.
Last updated
.
Post not yet marked as solved
5 Replies
783 Views
I discovered ubiquitousItemIsExcludedFromSync in the list of supported URL resource keys, but found very few little doc about it. The resource is r/w, however setting it will never return: the program will be stuck in an XPC call that never returns (tested on macOS 11.6 and 12 RC). Does anybody have any info on this? Thanks
Posted
by frizlab.
Last updated
.