Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

224
Vistas
@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
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda