Biblioteca Padrão do Swift (iOS/macOS): visão geral completa
A biblioteca padrão do Swift é um conjunto fundamental de tipos, protocolos e funções incorporados diretamente na linguagem. Ela fornece a funcionalidade básica necessária para o desenvolvimento em iOS, macOS, watchOS e tvOS. Ao contrário dos frameworks Foundation ou UIKit, que fazem parte do SDK, a biblioteca padrão do Swift está disponível imediatamente sem importações adicionais. Neste artigo, analisaremos detalhadamente seus principais componentes, estruturas de dados, protocolos e mecanismos de gerenciamento de memória.
Tipos de dados e coleções principais
O Swift fornece coleções poderosas e type-safe, otimizadas para desempenho.
Arrays (Array)
Coleção ordenada de elementos do mesmo tipo. Suporta acesso aleatório e redimensionamento dinâmico.
var numbers: [Int] = [1, 2, 3]numbers.append(4)let first = numbers[0] // 1numbers.sort()Conjuntos (Set)
Coleção não ordenada de elementos únicos. Ideal para verificação de pertinência e operações matemáticas.
let setA: Set<Int> = [1, 2, 3, 4]let setB: Set<Int> = [3, 4, 5, 6]let intersection = setA.intersection(setB) // {3, 4}let union = setA.union(setB) // {1, 2, 3, 4, 5, 6}Dicionários (Dictionary)
Coleção não ordenada de pares chave-valor. As chaves devem ser hashable (Hashable).
var capitals: [String: String] = ["Rússia": "Moscou", "EUA": "Washington"]capitals["Alemanha"] = "Berlim"if let russiaCapital = capitals["Rússia"] { print(russiaCapital) // Moscou}Protocolos: a base da versatilidade do Swift
A biblioteca padrão do Swift é construída sobre protocolos, que definem uma interface comum para diferentes tipos.
- Equatable — permite comparar instâncias usando
==. - Hashable — necessário para usar o tipo como chave de dicionário ou elemento de conjunto.
- Comparable — permite ordenar objetos (<, >, <=, >=).
- Codable — combina Encodable e Decodable para serialização em JSON, Property List e outros formatos.
- CaseIterable — fornece automaticamente uma coleção de todos os valores de uma enumeração.
Exemplo de uso do Codable
struct User: Codable { let id: Int let name: String let isActive: Bool}
let json = """{ "id": 42, "name": "Ivan", "isActive": true}""".data(using: .utf8)!
let decoder = JSONDecoder()if let user = try? decoder.decode(User.self, from: json) { print(user.name) // Ivan}Gerenciamento de memória: ARC e Copy-on-Write
O Swift usa Automatic Reference Counting (ARC) para gerenciar a memória de tipos de referência (classes). Para structs e enumerações, aplica-se a semântica de cópia de valor, mas com a otimização Copy-on-Write (COW) para coleções.
var array1 = [1, 2, 3]var array2 = array1 // Enquanto não modificamos — dados compartilhadosarray2.append(4) // Aqui ocorre a cópia real (COW)print(array1.count) // 3 — o array original não mudouModelos genéricos (Generics)
Generics permitem escrever funções e tipos flexíveis e reutilizáveis sem perda de desempenho.
func swapTwoValues<T>(_ a: inout T, _ b: inout T) { let temporaryA = a a = b b = temporaryA}
var x = 10var y = 20swapTwoValues(&x, &y) // x = 20, y = 10Tipos opcionais (Optionals)
Trabalho seguro com valores ausentes — uma das principais características do Swift. Optionals previnem exceções de null-pointer.
var optionalString: String? = "Olá"// Optional bindingif let unwrapped = optional Também na biblioteca
Trabalhando com Excel em TypeScript: bibliotecas, exemplos e ferramentas
reflect-metadata para TypeScript: guia completo com exemplos
Trabalhando com Apache Kafka em C++: biblioteca librdkafka e exemplos práticos