Post

Replies

Boosts

Views

Activity

(Sequoia) Are Xcode versions < 16 not-installable by design or bug?
Several of my colleagues had unfortunately autoupdated to Sequoia and were unable to run Xcode 15 as usual (we found a workaround by executing from inside the package content). I have instructed the rest of my colleagues from the organization to avoid updating to Sequoia for now. So my question is, is this intended and will this restriction persist for future versions of Sequoia or can we wait for an update to Sequoia that would "fix" this problem?
2
3
951
Sep ’24
ObservedObject lifecycle when created but not retained by parent UIViewController
Hello I am trying to understand how to properly manage ObservableObject's (ObservedObject inside the SwiftUI View) lifecycle which was created in a view controller as a parent of a SwiftUI view. I have read many posts and rewatched these two videos and I am not still 100% sure https://developer.apple.com/wwdc20/10040 https://developer.apple.com/wwdc22/10072 So my dilemma boils down to whether it is needed to strongly retain the object by the parent view controller or not. In many sources including the videos it was mentioned that SwiftUI does NOT manage the lifecycle of the ObservedObject. The SwiftUI view and the model (ObservableObject) final class MyModel: ObservableObject { // imagine this is somehow updated form somewhere @Published var message = "" } struct MySwiftUIView: View { @ObservedObject var myModel: MyModel var body: some View { Text("message is \(myModel.message)") } } Option 1: View controller retaining the object class MyViewController: UIViewController { let myModel: MyModel // strong reference let hostingController: UIHostingController<MySwiftUIView> init() { myModel = MyModel() let mySwiftUIView = MySwiftUIView(myModel: myModel) self.hostingController = UIHostingController(rootView: mySwiftUIView) super.init(nibName: nil, bundle: nil) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } } Option 2: View controller NOT retaining the object class MyViewController: UIViewController { let hostingController: UIHostingController<MySwiftUIView> init() { let myModel = MyModel() // local retain for the `init` body let mySwiftUIView = MySwiftUIView(myModel: myModel) self.hostingController = UIHostingController(rootView: mySwiftUIView) super.init(nibName: nil, bundle: nil) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } } Can i just use Option 2, and not retaining the observable object by the parent view controller or would that cause any issues? Thank you in advance!
1
0
463
Jul ’24