niech parent będzie Task { niech child będzie Task { print("child started, isCancelled = ", Task.isCancelled) // NIE 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 sekunda parent.cancel() /////// niech parent będzie 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 sekunda parent.cancel()
iOS
Czy wystąpiły problemy z konkurencyjnością (Sendable, unchecked Sendable, przejścia między aktorami) w modułach, z którymi bezpośrednio pracowałeś?
protokół SomeProtocol {} func test1_1(wartość: SomeProtocol) {} func test2_1(wartość: some SomeProtocol) {} func test1_2(wartość: any SomeProtocol) {}
Jak działa system projektowania między UIKit a SwiftUI — czy występuje duplikacja komponentów lub opakowań?
protokół SomeProtocol {} func test1_1(wartość: SomeProtocol) {} func test1_2(wartość: any SomeProtocol) {}
niech rodzic będzie Task { let child = Task { print("dziecko rozpoczęło, isCancelled = ", Task.isCancelled) // for index in (1...[phone]) { print(index) } print("dziecko zakończyło, isCancelled = ", Task.isCancelled) // } await child.value } try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 sekunda parent.cancel()
protokół SomeProtocol {} func test1_1(wartość: SomeProtocol) {} func test1_2(wartość: dowolny SomeProtocol) {} func test2_1(wartość: some SomeProtocol) {} func test2_2<Wartość: SomeProtocol>(wartość: Wartość) {} klasa A { func test2_2<Wartość: SomeProtocol>(wartość: Wartość) { } } klasa B: SomeProtocol { } A().test2_2(wartość: B())
Nawigacja jest napisana w UIKit, a alerty/arkusze są wywoływane w UIKit czy korzystasz z natywnych środków SwiftUI?
Czy w projekcie są jeszcze jakieś makra oprócz warstwy sieciowej?
Jak zaimplementowano interakcję gestami i zoom w galerii zdjęć — w UIKit czy SwiftUI?
Opowiedz więcej o swoim ostatnim projekcie — module galerii zdjęć na Avito, za który odpowiadałeś (krótkoterminowy wynajem, formularz rezerwacji itp.)
struct ExampleView: View { var body: some View { VStack { FormView() Button("Reset") { // TODO: } } } } // TYLKO DO ODCZYTU 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) } } }
Opowiedz o przydatnych Property Wrapper'ach, których używałeś w projekcie
Jaki jest minimalny cel iOS w projekcie?
Jaka wersja języka Swift jest używana w projekcie — powyżej 6 czy poniżej?
Czy istnieją problemy, obejścia lub ograniczenia związane z SwiftUI w celu iOS 16 w porównaniu do iOS 15?
klasa finalna ProfileViewModel1 { enum Stan { ... } var stan: Stan = .idle let usługa: UserService init(usługa: UserService) { ... } func onBackPress() { // widok deinit } func loadUser() { stan = .loading Task { [weak self] guard let self else { return } do { let użytkownik = try await self.usługa.fetchUser() self.stan = .loaded(użytkownik) } catch { self.stan = .failed(error.localizedDescription) } } } }
Array { value1 value2 if condition { value3 } }
Kiedy dołączyłeś do projektu, czy Swift 6 już istniał, czy przejście nastąpiło podczas twojego udziału?
Gdybyś projektował wielokrotnego użytku komponent przycisku dla systemu projektowania w SwiftUI z różnymi stylami (primary/secondary), jak byś to zrealizował?