Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

209
Views
@StateObject vs @ObservedObject cuando se pasa externamente pero es propiedad de la vista

Basado en esta respuesta: ¿Cuál es la diferencia entre ObservedObject y StateObject en SwiftUI?

Y el código de documentación de Apple aquí: https://developer.apple.com/documentation/swiftui/managing-model-data-in-your-app

En la aplicación SwiftUI, se debe usar un envoltorio de propiedad @StateObject cuando una View crea una instancia del objeto en sí, para que el objeto no se vuelva a crear durante una actualización de la vista.

Si se crea una instancia del objeto en otro lugar, se debe usar un envoltorio @ObservedObject en su lugar.

Sin embargo, hay una línea muy fina que lo hace un poco confuso: ¿qué sucede si el objeto se instancia en otro lugar, pero se "inyecta" en la View y luego la vista es el único propietario/titular de ese objeto? ¿Debería ser @StateObject o @ObservedObject ?

Ejemplo de código para ilustrar el punto:

 import SwiftUI import Combine import Foundation struct ViewFactory { func makeView() -> some View { let viewModel = ViewModel() return NameView(viewModel) } } final class ViewModel: ObservableObject { @Published var name = "" init() {} } struct NameView: View { // Should this be an `@ObservedObject` or `@StateObject`? @ObservedObject var viewModel: ViewModel init(_ viewModel: ViewModel) { self.viewModel = viewModel } var body: some View { Text(viewModel.name) } }

Basado en este artículo: https://www.hackingwithswift.com/quick-start/swiftui/whats-the-difference- between -observedobject-state-and-environmentobject

Hay una diferencia importante entre @StateObject y @ObservedObject, que es la propiedad: qué vista creó el objeto y qué vista solo lo observa.

La regla es esta: cualquier vista que sea la primera en crear su objeto debe usar @StateObject, para decirle a SwiftUI que es el propietario de los datos y es responsable de mantenerlos vivos. Todas las demás vistas deben usar @ObservedObject, para decirle a SwiftUI que quieren ver los cambios en el objeto, pero que no lo poseen directamente.

parece que si View crea una instancia de ViewModel , debe declararse con @StateObject . Mi código es muy similar, la única diferencia es que ViewModel se crea en otro lugar, pero View lo "posee" después de la inicialización.

over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!