Thuta Learning
ရှာဖွေရန်
ExercisesMobile Developmentintermediate

လက်တွေ့ လေ့ကျင့်ခန်း အစုံ ၂

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • လက်တွေ့ လေ့ကျင့်ခန်း အစုံ ၂ ကို ကြောက်စရာမလိုအောင် နားလည်မယ်
  • ကိုယ်တိုင် Xcode/SwiftUI code ကို run ကြည့်တတ်မယ်
  • Real project ထဲမှာ ဒီ concept ကို ချက်ချင်း အသုံးချတတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

ဒီ round က round ၁ ထက် အဆင့်မြင့်ပါတယ် — skill တစ်ခုချင်းစီကို ခွဲစမ်းမယ့်အစား တစ်ခါတည်း ပေါင်းသုံးရမှာပါ။ App တစ်ခုအတွက် MVVM layer ဘယ်လို ခွဲသင့်လဲ ဆုံးဖြတ်ခြင်း, View-local `@State` vs app-wide `ObservableObject` ကို scenario အလိုက် ရွေးချယ်ခြင်း, App Store submit ကို production document အနေနဲ့ ရေးဆွဲခြင်း — ဒါတွေ ပါဝင်ပါတယ်။ Task တစ်ခုကို ၁၀ မိနစ်ခန့် ယူပါ.

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

Task 1: Note-taking app (offline-first, iCloud sync optional) တစ်ခုအတွက် MVVM layer (Data/ViewModel/View) ကို ဒီဇိုင်းရေးပြီး, layer တစ်ခုစီရဲ့ responsibility ဘာတွေဖြစ်သင့်လဲ ရေးပါ။ Task 2: 'search box ထဲက text (View local)' vs 'user login status (app-wide)' ဆိုတဲ့ scenario ၂ ခုအတွက် `@State` သုံးမလား `ObservableObject` သုံးမလား ဆုံးဖြတ်ပြီး ဘာကြောင့်လဲ ရှင်းပါ။ Task 3: App တစ်ခု App Store မှာ launch ပြီးနောက် crash rate (Xcode Organizer/Firebase Crashlytics) ရုတ်တရက် တက်လာရင် ဘယ် step အစီအစဉ်နဲ့ investigate/response လုပ်မလဲ ရေးပါ။ Task 4: 'App ရဲ့ camera permission ကို feature တစ်ခုတည်းအတွက်ပဲ (receipt scanner) သုံးချင်တယ်, photo library access မလိုချင်ဘူး' ဆိုတဲ့ requirement အတွက် permission declaration/request flow ကို ဒီဇိုင်းရေးဆွဲပါ။

အတူတူ ကြည့်မယ်

text
# Task 2 - @State vs ObservableObject
Search box text (used by one screen only) -> @State
  (View-local, private, doesn't need to be shared)

User login status (needed across many screens) -> ObservableObject
  (app-wide, injected via .environmentObject at the root)

# Task 3 - crash-rate incident response
1. Check Xcode Organizer / Crashlytics — which screen/exception spiked?
2. Check recent release notes — did a new version just roll out?
3. Reproduce locally on the affected iOS version/device if possible
4. If severe, consider phased release pause in App Store Connect
5. Document root cause once fixed, add a regression test
You should see
MVVM layer design, @State-vs-ObservableObject ဆုံးဖြတ်ချက်, crash-rate incident response plan နှင့် scoped permission flow ရရှိလာမည်။

၅ မိနစ် စမ်းကြည့်

Task 4 ရဲ့ permission flow ကို `LocationManager` (Intermediate chapter) ရဲ့ pattern အတိုင်း camera permission (`NSCameraUsageDescription`) အတွက် ကိုယ်တိုင် ရေးကြည့်ပါ။

သတိလေးတစ်ချက်

App Store review က permission scope creep ကို strict စစ်ဆေးပါတယ် — declared usage description နဲ့ app ရဲ့ actual behavior မကိုက်ညီရင် (ဥပမာ - 'receipt scan' လို့ ရေးထားပေမယ့် photo library ကိုပါ access လုပ်နေရင်) reject ခံရနိုင်ပါတယ်။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • View-local state (search text, form input) ကို `ObservableObject` ထဲ ထည့်ခြင်း — overkill ဖြစ်ပြီး app-wide re-render ကို trigger လုပ်နိုင်ပါတယ်
  • Photo library access ('NSPhotoLibraryUsageDescription') ကို core feature အတွက် တကယ်မလိုအပ်ဘဲ (camera capture ပဲ လိုချင်တာ) တောင်းဆိုခြင်း — App Store review ကနေ reject ခံရနိုင်ကြောင်း မသိခြင်း

အခု ကိုယ်တိုင် စမ်းကြည့်

Task 4 ရဲ့ permission flow ကို `LocationManager` (Intermediate chapter) ရဲ့ pattern အတိုင်း camera permission (`NSCameraUsageDescription`) အတွက် ကိုယ်တိုင် ရေးကြည့်ပါ။

You'll know it worked when: MVVM layer design, @State-vs-ObservableObject ဆုံးဖြတ်ချက်, crash-rate incident response plan နှင့် scoped permission flow ရရှိလာမည်။

လက်တွေ့ လေ့ကျင့်ခန်း အစုံ ၂ | Thuta Learning