lasă ca parent să fie Task { lasă ca child să fie Task { print("child started, isCancelled = ", Task.isCancelled) // NU 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 secundă parent.cancel() /////// lasă ca parent să fie 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 secundă parent.cancel()
iOS
Au fost probleme cu concurența (Sendable, Sendable nesigur, trecerea între actori) în modulele cu care ați lucrat direct?
protocol SomeProtocol {} func test1_1(valoare: SomeProtocol) {} func test2_1(valoare: some SomeProtocol) {} func test1_2(valoare: any SomeProtocol) {}
Cum funcționează sistemul de design între UIKit și SwiftUI — există duplicare de componente sau învelișuri?
protocol SomeProtocol {} func test1_1(valoare: SomeProtocol) {} func test1_2(valoare: any SomeProtocol) {}
lasă ca părintele să fie Task { let child = Task { print("copilul a început, isCancelled = ", Task.isCancelled) // for index in (1...[phone]) { print(index) } print("copilul a terminat, isCancelled = ", Task.isCancelled) // } await child.value } try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 secundă parent.cancel()
Vorbește-mi mai detaliat despre ultimul tău proiect — modulul de galerie foto de pe Avito, pentru care ai fost responsabil (închiriere pe termen scurt, formular de rezervare etc.)
protocol SomeProtocol {} funcție test1_1(valoare: SomeProtocol) {} funcție test1_2(valoare: orice SomeProtocol) {} funcție test2_1(valoare: some SomeProtocol) {} funcție test2_2<Valoare: SomeProtocol>(valoare: Valoare) {} clasă A { funcție test2_2<Valoare: SomeProtocol>(valoare: Valoare) { } } clasă B: SomeProtocol { } A().test2_2(valoare: B())
Navigația este scrisă în UIKit, iar alertele/foile le scoți în UIKit sau folosești mijloacele native ale SwiftUI?
Cum a fost implementată interacțiunea cu gesturile și zoom-ul în galeria foto — în UIKit sau SwiftUI?
Există alte macro-uri în proiect în afară de stratul de rețea?
Vorbește despre Property Wrapper-urile utile pe care le-ai folosit în proiect
struct ExampleView: View { var body: some View { VStack { FormView() Button("Reset") { // TODO: } } } } // DOAR CITIRE 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) } } }
Care este ținta minimă iOS în prezent în proiect?
Array { value1 value2 if condition { value3 } }
Când ai venit în proiect, era deja Swift 6 sau tranziția a avut loc în timpul tău?
Care este versiunea limbajului Swift utilizată în proiect — mai mare sau mai mică de 6?
clasă finală ProfileViewModel1 { enum Stare { ... } var stare: Stare = .idle let serviciu: UserService init(serviciu: UserService) { ... } func onBackPress() { // view deinit } func loadUser() { stare = .loading Task { [weak self] guard let self else { return } do { let utilizator = try await self.serviciu.fetchUser() self.stare = .loaded(utilizator) } catch { self.stare = .failed(error.localizedDescription) } } } }
Există probleme, soluții temporare sau restricții legate de SwiftUI în scopul iOS 16 comparativ cu iOS 15?
Dacă ai proiecta un component reutilizabil de buton pentru un sistem de design în SwiftUI cu stiluri diferite (primar/secundar), cum l-ai implementa?