yoklateknik mülakat

Mobil Ios Swiftui State Rendering Mülakat Soruları

75 doğrulanmış Mobil Ios Swiftui State Rendering mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Ios Swiftui State RenderingZorluk 1
SwiftUI'de bir view'ın property'sini @State ile işaretlemek gerçekte ne yapar?
  • aProperty'yi uygulamadaki her view'dan erişilebilir hale getirir.
  • bDeğeri uygulama açılışları arasında kalıcı olarak diske kaydeder.
  • cProperty'yi init sonrası asla değişemeyecek şekilde sabitler.
  • dDeğerin sahipliğini SwiftUI'ye verir ve değiştiğinde view'ı yeniden çizdirir.
Açıklama:@State, bir value type'ın depolamasını view struct'ının kendi ömrünün dışında SwiftUI'ye devreden bir property wrapper'dır; böylece değer tekrar tekrar çağrılan body boyunca korunur ve değiştirildiğinde re-render tetiklenir.
Ios Swiftui State RenderingZorluk 1
SwiftUI'de @Binding'in temel amacı nedir?
  • aBir child view içinde değerin bağımsız yepyeni bir kopyasını oluşturmak.
  • bBir network yanıtını çevrimdışı kullanım için kalıcı olarak önbelleğe almak.
  • cBir child view'a, parent'a ait bir değere okuma-yazma erişimi vermek.
  • dTüm uygulama genelinde paylaşılan global bir singleton tanımlamak.
Açıklama:@Binding kendi depolamasına sahip değildir; başka bir yerde sahiplenilen state'e geri referanstır, bu sayede child view o değeri okuyup yazabilirken parent (veya orijinal sahip) tek doğru kaynak olarak kalır.
Ios Swiftui State RenderingZorluk 1
Bir parent view @State private var isOn: Bool sahiplenir ve $isOn'u child bir Toggle'a geçirir. Kullanıcı toggle'a dokunur. Ne olur?
  • aSadece child view güncellenir; parent'ın sakladığı değer hiç değişmez.
  • bUygulama elle yeniden başlatılana kadar hiçbir şey güncellenmez.
  • cBinding ayrı bir kopya oluşturur, bu yüzden parent ve child artık değer konusunda uyuşmaz.
  • dChild, binding üzerinden yazar ve parent'ın state'ini değiştirir.
Açıklama:$ öneki, @State deposundan bir Binding üretir (projects). Bu binding'e yazmak parent'ın gerçek deposuna geri yazar; bu yüzden SwiftUI, bu state'e bağımlı olan parent dahil her view'ın body'sini geçersiz kılıp yeniden çizer.
Ios Swiftui State RenderingZorluk 2
SwiftUI neden @State property'lerinin convention olarak private olmasını ister?
  • aÇünkü değeri sadece o view sahiplenmeli ve değiştirmeli.
  • bÇünkü private property'ler daha hızlı derlenir.
  • cÇünkü SwiftUI private olmayan state'i sessizce yok sayar.
  • dÇünkü Swift private olmayan property wrapper'ları tamamen yasaklar.
Açıklama:@State yerel, view'a ait depolamayı modeller. private işaretlemek bir convention'dır (katı bir derleyici kuralı değil) ve niyeti pekiştirir: dış kod view'ın iç state'ine doğrudan erişmek yerine geçirilen bir Binding üzerinden etkileşmelidir.
Ios Swiftui State RenderingZorluk 2
Aynı reference-type model bir view'a uygulandığında @ObservedObject ile @StateObject arasındaki temel davranışsal fark nedir?
  • a@ObservedObject Combine publisher'ları destekler, @StateObject desteklemez.
  • b@StateObject, instance'ın oluşturulmasını ve ömrünü view'a bağlar.
  • cİkisi davranışsal fark olmadan tamamen birbirinin yerine geçebilir.
  • d@ObservedObject sadece struct'larla çalışır, class'larla asla çalışmaz.
Açıklama:@StateObject nesneyi view identity'sinin ömrü boyunca (bir kez) tahsis edip canlı tutar. @ObservedObject nesnenin ömrünü kendisi yönetmez — parent view her body değerlendirmesinde yeni bir instance oluşturup geçirirse, gözlemlenen nesne istemeden sıfırlanabilir.
Ios Swiftui State RenderingZorluk 2
Bir view, property üzerinde doğrudan varsayılan değer olarak @ObservedObject var viewModel = ViewModel() tanımlıyor. Parent'ın body'si her yeniden çalıştığında sessizce yepyeni bir ViewModel instance'ı oluşuyor. Doğru düzeltme nedir?
  • aViewModel'i class instance'ının etrafına ekstra bir @State var ile sarmak.
  • bWrapper'ı @StateObject var viewModel = ViewModel() yapmak.
  • cVarsayılan değer init ifadesini bunun yerine onAppear içine taşımak.
  • dÖmür sorununu çözmek için ViewModel sınıfını final işaretlemek.
Açıklama:Bu bug, klasik bir '@ObservedObject + varsayılan değer' hatasıdır: @ObservedObject ömrü yönetmediği için, struct her yeniden oluşturulduğunda default init ifadesi tekrar çalışır. @StateObject tam olarak bu ilk oluşturmayı sahiplenip aynı instance'ı canlı tutmak için vardır.

2400 soruluk Mobil bankasında kendini sına.

Mülakata başla