άσε ο γονέας να είναι Task { άσε το παιδί να είναι Task { print("child started, isCancelled = ", Task.isCancelled) // ΟΧΙ 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 δευτερόλεπτο parent.cancel() /////// άσε ο γονέας να είναι 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 δευτερόλεπτο parent.cancel()
iOS
Υπήρχαν προβλήματα με τον ανταγωνισμό (Sendable, unchecked Sendable, μετάβαση μεταξύ ηθοποιών) στα modules που εργάστηκες άμεσα;
πρωτόκολλο SomeProtocol {} func test1_1(τιμή: SomeProtocol) {} func test2_1(τιμή: some SomeProtocol) {} func test1_2(τιμή: any SomeProtocol) {}
Πώς λειτουργεί το σύστημα σχεδίασης μεταξύ UIKit και SwiftUI — υπάρχει διπλότυπο συστατικών ή περιτυλίγματα;
πρωτόκολλο SomeProtocol {} func test1_1(τιμή: SomeProtocol) {} func test1_2(τιμή: any SomeProtocol) {}
άσε τον γονέα να είναι Task { let child = Task { print("το παιδί ξεκίνησε, isCancelled = ", Task.isCancelled) // for index in (1...[phone]) { print(index) } print("το παιδί τελείωσε, isCancelled = ", Task.isCancelled) // } await child.value } try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 δευτερόλεπτο parent.cancel()
πρωτόκολλο SomeProtocol {} λειτουργία test1_1(τιμή: SomeProtocol) {} λειτουργία test1_2(τιμή: οποιοδήποτε SomeProtocol) {} λειτουργία test2_1(τιμή: some SomeProtocol) {} λειτουργία test2_2<Τιμή: SomeProtocol>(τιμή: Τιμή) {} κλάση A { λειτουργία test2_2<Τιμή: SomeProtocol>(τιμή: Τιμή) { } } κλάση B: SomeProtocol { } A().test2_2(τιμή: B())
Η πλοήγηση είναι γραμμένη σε UIKit, και τα alerts/φύλλα τα βγάζετε στο UIKit ή χρησιμοποιείτε τα εγγενή μέσα του SwiftUI;
Πες μου περισσότερα για το τελευταίο σου έργο — το module της φωτογραφικής γκαλερί στο Avito, για το οποίο ήσουν υπεύθυνος (βραχυπρόθεσμη ενοικίαση, φόρμα κράτησης κ.λπ.)
Υπάρχουν άλλα macros στο έργο εκτός από το δίκτυο;
Πώς υλοποιήθηκε η αλληλεπίδραση με τις χειρονομίες και το ζουμ στη φωτογραφική γκαλερί — σε UIKit ή SwiftUI;
struct ExampleView: View { var body: some View { VStack { FormView() Button("Reset") { // TODO: } } } } // ΜΟΝΟ ΓΙΑ ΑΝΑΓΝΩΣΗ 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) } } }
Μίλησε για χρήσιμα Property Wrapper που χρησιμοποίησες στο έργο
Ποιο είναι το ελάχιστο στόχο iOS στο έργο τώρα;
Ποια έκδοση της γλώσσας Swift χρησιμοποιείται στο έργο — πάνω από 6 ή κάτω;
Array { value1 value2 if condition { value3 } }
Υπάρχουν προβλήματα, λύσεις ή περιορισμοί σχετικά με το SwiftUI με στόχο το iOS 16 σε σύγκριση με το iOS 15;
τελική κλάση ProfileViewModel1 { enum Κατάσταση { ... } var κατάσταση: Κατάσταση = .idle ας υπηρεσία: UserService init(υπηρεσία: UserService) { ... } func onBackPress() { // view deinit } func loadUser() { κατάσταση = .loading Task { [weak self] guard let self else { return } do { let χρήστης = try await self.υπηρεσία.fetchUser() self.κατάσταση = .loaded(χρήστης) } catch { self.κατάσταση = .failed(error.localizedDescription) } } } }
Όταν ήρθες στο έργο, υπήρχε ήδη Swift 6 ή η μετάβαση συνέβη κατά τη διάρκεια της παρουσίας σου;
Αν σχεδιάζατε ένα επαναχρησιμοποιήσιμο συστατικό κουμπιού για ένα σύστημα σχεδίασης σε SwiftUI με διαφορε στυλ (πρωταρχικό/δευτερεύον), πώς θα το υλοποιούσατε;