Principal
Nima uchun mainda cheksiz for sikli bilan hozirgi kod ishlamayapti? Buni qanday tuzatish mumkin?
sobes.tech AI
AIdan javob
Agar iOS ilovangizning main qismida cheksiz for sikli bo'lsa, ilova ishlamaydi, chunki asosiy oqim bu sikl bilan bloklanadi va UI va tizim xabarlarini ishlay olmaydi.
iOSda asosiy voqea sikli (run loop) tizim tomonidan boshqariladi va asosiy oqimni bloklash interfeysning qotib qolishiga olib keladi.
Vaziyatni tuzatish uchun, main dan cheksiz siklni olib tashlash va tizimga voqea siklini boshqarishga ruxsat berish kerak. Agar takroriy vazifalar bajarilishi kerak bo'lsa, Timer, fon ketma-ketliklari (DispatchQueue) yoki boshqa asinxron mexanizmlardan foydalanish yaxshiroq.
Noto'g'ri kod misoli:
func main() {
for { // cheksiz sikl
// biror narsa qilish
}
}
To'g'ri yondashuv:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
// davriy vazifa
}
return true
}
}
Shunday qilib, biz asosiy oqimni bloklamaymiz va tizim mexanizmlaridan takroriy harakatlar uchun foydalanamiz.