iOS
záverečná trieda ProfileViewModel1 { enum Stav { ... } var stav: Stav = .idle let služba: UserService init(služba: UserService) { ... } func onBackPress() { // view deinit } func loadUser() { stav = .loading Task { [weak self] guard let self else { return } do { let používateľ = try await self.služba.fetchUser() self.stav = .loaded(používateľ) } catch { self.stav = .failed(error.localizedDescription) } } } }
Prečo pridanie mutexu len na zápis ne rieši problém data race? Ako správne používať mutex na ochranu spoločnej premennej?
Stručne sa predstavte a opíšte svoju súčasnú prácu.
protokol SomeProtocol {} func test1_1(hodnota: SomeProtocol) {} func test1_2(hodnota: any SomeProtocol) {}
struct ExampleView: View { var body: some View { VStack { FormView() Button("Reset") { // TODO: } } } } // IBAČE ZA ČITANJE 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) } } }
Ak by ste navrhovali znovupoužiteľnú komponentu tlačidla pre systém dizajna v SwiftUI s rôznymi štýlmi (primárny/sekundárny), ako by ste to realizovali?
Prečo niektoré dotazy vracajú cenu, ktorá nikdy neexistovala (napríklad medzi starou a novou cenou)?
Keď si prišiel na projekt, už bol Swift 6, alebo prechod prebehol počas tvojho pôsobenia?
Je potrebné napísať jednoduchú knižnicu cache v pamäti. type Cache interface { Set(k, v string) Get(k string) (v string, ok bool) }
protokol SomeProtocol {} funkcia test1_1(hodnota: SomeProtocol) {} funkcia test1_2(hodnota: akýkoľvek SomeProtocol) {} funkcia test2_1(hodnota: some SomeProtocol) {} funkcia test2_2<Hodnota: SomeProtocol>(hodnota: Hodnota) {} trieda A { funkcia test2_2<Hodnota: SomeProtocol>(hodnota: Hodnota) { } } trieda B: SomeProtocol { } A().test2_2(hodnota: B())
```swift struct ContentView: View { var body: some View { ScrollView { content .padding(20) } .background(Color(.systemGroupedBackground)) .overlay(alignment: .bottom) { continueButton } } } ``` ```swift struct ContentView: View { var body: some View { ScrollView { content .padding(20) } .background(Color(.systemGroupedBackground)) .safeAreaInset(edge: .bottom) { continueButton } } } ```
Popíšte slovami, ako by ste riešili problém cacheovania ceny auta: dátová štruktúra, synchronizácia, aktualizácia.
Ako komunikujú View a ViewModel v UIKit — používa sa niečo ako RxSwift/Combine pre väzby?
Povedz o zaujímavých zdrojoch pre rozvoj — YouTube kanály, Telegram kanály, komunity, nástroje
protokol SomeProtocol {} func test1_1(hodnota: SomeProtocol) {} func test2_1(hodnota: some SomeProtocol) {} func test1_2(hodnota: any SomeProtocol) {}
Aká verzia jazyka Swift sa používa v projekte — vyššia alebo nižšia ako 6?
Čo sa používa pre prezentačné moduly v UIKit a SwiftUI — aká architektúra?
@MainActor final class ViewModel: ObservableObject { @Published var image: UIImage? func onDownloadPhoto(url: URL) { do { let data = try Data(contentsOf: url) image = UIImage.init(data: data) } catch { log.error("Nepodarilo sať stiahnuť obrázok: \(error)") } } } Button("Stiahnuť") { onDownloadPhoto(url) }
func getCarPrice() int64 { time.Sleep(1 * time.Second) return rand.Int63n(1000) } func main() { http.HandleFunc("/car/instant", func(resp http.ResponseWriter, req *http.Request) { fmt.Fprintf(resp, "%d", 0) }) http.ListenAndServe(":8080", nil) }
Boli problémy s konkurentnosťou (Sendable, unchecked Sendable, prehody medzi aktérmi) v moduloch, s ktorými ste priamo pracovali?