Observation para Swift: guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Observation para Swift: guia completo com exemplos

1. O que é e para que serve

Observation é um novo framework apresentado pela Apple na WWDC 2023, que reinventa completamente o mecanismo de observação de dados em Swift. Ele substitui o modelo antigo baseado em @Published e ObservableObject do Combine, oferecendo uma abordagem mais performática, thread-safe e intuitiva. No centro do Observation estão o protocolo Observable e o macro @Observable, que permitem rastrear alterações no nível de propriedades individuais, e não do objeto inteiro.

Por que isso é necessário? No desenvolvimento moderno para iOS, macOS, watchOS e tvOS, o principal framework para construir interfaces é o SwiftUI. Para funcionar de forma eficiente, o SwiftUI precisa de um mecanismo que o informe sobre mudanças nos dados, para redesenhar apenas as partes da interface que realmente mudaram. A abordagem antiga com ObservableObject redesenhava a View inteira sempre que qualquer propriedade era alterada, causando cálculos desnecessários e perda de desempenho. O Observation resolve esse problema, garantindo o rastreamento preciso de mudanças no nível de propriedades individuais.

Principais vantagens: o Observation faz parte da biblioteca padrão do Swift (a partir do iOS 17, macOS 14, tvOS 17, watchOS 10), não requer dependências adicionais, é totalmente thread-safe (as alterações podem ser feitas de qualquer thread, e as notificações são entregues na thread principal) e é profundamente integrado ao SwiftUI através do macro @Bindable e do novo modificador .onChange(of:).

2. Instalação

Observation é um framework nativo da Apple. Ele faz parte da biblioteca padrão do Swift a partir da versão Swift 5.9 e Xcode 15. Não é necessária nenhuma instalação adicional via gerenciadores de pacotes (CocoaPods, Swift Package Manager, Carthage).

Para começar a usar o Observation, basta:

  1. Instalar o Xcode 15 ou superior.
  2. Nas configurações do projeto, garantir que a versão mínima de implantação (Deployment Target) esteja definida como iOS 17, macOS 14, tvOS 17 ou watchOS 10.
  3. Importar o framework no arquivo onde você planeja usá-lo: import Observation.

Se você estiver usando SwiftUI, não é necessário importar Observation separadamente — ele fica automaticamente disponível ao importar SwiftUI.

3. Início rápido — exemplo mínimo funcional

Vamos criar um modelo de dados simples e uma View que o exibe.

import SwiftUI

// 1. Criamos uma classe observável
@Observable
class UserSettings {
    var username: String = "Convidado"
    var isLoggedIn: Bool = false
}

// 2. Usamos na View
struct ContentView: View {
    // @State para gerenciar o ciclo de vida
    @State private var settings = UserSettings()

    var body: some View {
        VStack(spacing: 20) {
            Text("Usuário: \(settings.username)")
                .font(.title)

            TextField("Digite seu nome", text: $settings.username)
                .textFieldStyle(.roundedBorder)
                .padding()

            Toggle("Entrar", isOn: $settings.isLoggedIn)
                .padding()

            if settings.isLoggedIn {
                Text("Você entrou como \(settings.username)")
                    .foregroundColor(.green)
            } else {
                Text("Você não está autenticado")
                    .foregroundColor(.red)
            }
        }
        .padding()
    }
}

Neste exemplo, o macro @Observable transforma automaticamente a classe UserSettings em um objeto observável. O SwiftUI detecta as mudanças nas propriedades username e isLoggedIn e atualiza apenas as partes da interface que dependem delas, sem redesenhar a View inteira.

Recommendations