lascia che parent sia Task { lascia che child sia Task { print("child started, isCancelled = ", Task.isCancelled) // NO false for index in (1...[phone]) { print(index) } print("child finished, isCancelled = ", Task.isCancelled) // } await child.value } try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 secondo parent.cancel() /////// lascia che parent sia Task { async let child: Void = { print("child started, isCancelled =", Task.isCancelled) for index in (1...[phone]) { print(index) } print("child finished, isCancelled =", Task.isCancelled) }() await child } try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 secondo parent.cancel()
iOS
Ci sono stati problemi di concorrenza (Sendable, Sendable non verificato, transizioni tra attori) nei moduli con cui hai lavorato direttamente?
protocollo SomeProtocol {} func test1_1(valore: SomeProtocol) {} func test2_1(valore: some SomeProtocol) {} func test1_2(valore: any SomeProtocol) {}
Come funziona il sistema di progettazione tra UIKit e SwiftUI — ci sono duplicazioni di componenti o wrapper?
protocollo SomeProtocol {} func test1_1(valore: SomeProtocol) {} func test1_2(valore: any SomeProtocol) {}
lascia che il genitore sia Task { let child = Task { print("figlio avviato, isCancelled = ", Task.isCancelled) // for index in (1...[phone]) { print(index) } print("figlio terminato, isCancelled = ", Task.isCancelled) // } await child.value } try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 secondo parent.cancel()
protocol SomeProtocol {} func test1_1(valore: SomeProtocol) {} func test1_2(valore: qualsiasi SomeProtocol) {} func test2_1(valore: some SomeProtocol) {} func test2_2<Valore: SomeProtocol>(valore: Valore) {} classe A { func test2_2<Valore: SomeProtocol>(valore: Valore) { } } classe B: SomeProtocol { } A().test2_2(valore: B())
La navigazione è scritta in UIKit, e gli alert/sheet vengono gestiti in UIKit o usi i mezzi nativi di SwiftUI?
Parlami più nel dettaglio del tuo ultimo progetto — il modulo della galleria fotografica su Avito, di cui eri responsabile (affitto a breve termine, modulo di prenotazione, ecc.)
Ci sono altri macro nel progetto oltre allo strato di rete?
Come è stata implementata l'interazione con i gesti e lo zoom nella galleria fotografica — in UIKit o SwiftUI?
struct ExampleView: View { var body: some View { VStack { FormView() Button("Reset") { // TODO: } } } } // SOLO LETTURA struct FormView: View { @State private var firstname = "" @State private var lastname = "" @State private var email = "" @State private var website = "" var body: some View { Form { TextField("Enter firstname", text: self.$firstname) TextField("Enter lastname", text: self.$lastname) TextField("Enter email address", text: self.$email) TextField("Enter website address", text: self.$website) } } }
Parlami dei Property Wrapper utili che hai usato nel progetto
Qual è il target minimo di iOS attualmente nel progetto?
Quale versione del linguaggio Swift viene utilizzata nel progetto: superiore a 6 o inferiore?
Array { value1 value2 if condition { value3 } }
Ci sono problemi, soluzioni temporanee o limitazioni relative a SwiftUI con l'obiettivo iOS 16 rispetto a iOS 15?
classe finale ProfileViewModel1 { enum Stato { ... } var stato: Stato = .idle let servizio: UserService init(servizio: UserService) { ... } func onBackPress() { // vista deinit } func loadUser() { stato = .loading Task { [weak self] guard let self else { return } do { let utente = try await self.servizio.fetchUser() self.stato = .loaded(utente) } catch { self.stato = .failed(error.localizedDescription) } } } }
Quando sei arrivato al progetto, c'era già Swift 6, o il passaggio è avvenuto durante il tuo periodo?
Se stessi progettando un componente di pulsante riutilizzabile per un sistema di design in SwiftUI con stili diversi (primario/secundario), come lo implementeresti?