Sobes.tech
Principal

Niyə main-də sonsuz for döngüsü ilə hazırkı kod işləməyir? Bunu necə düzəltmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Əgər iOS tətbiqinizin main hissəsində sonsuz for döngüsü varsa, tətbiq işləməz, çünki əsas iş parçacığı bu döngü ilə bloklanır və UI və sistem mesajlarını işləyə bilməz.

iOS-də əsas hadisə döngüsü (run loop) sistem tərəfindən idarə olunur və əsas iş parçacığını bloklamaq interfeysin donmasına səbəb olur.

Bu vəziyyəti düzəltmək üçün, main-dən sonsuz döngünü çıxarın və sistemin hadisə döngüsünü idarə etməsinə icazə verin. Əgər təkrarlanan tapşırıqlar yerinə yetirmək lazımdırsa, timerlər (Timer), arxa plan növbələri (DispatchQueue) və ya digər asinxron mexanizmlərdən istifadə etmək daha yaxşıdır.

Yanlış kod nümunəsi:

func main() {
    for { // sonsuz döngü
        // nəsə etmək
    }
}

Düzgün yanaşma:

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
            // dövri tapşırıq
        }
        return true
    }
}

Beləliklə, biz əsas iş parçacığını bloklamırıq və sistem mexanizmlərindən təkrarlanan fəaliyyətlər üçün istifadə edirik.