Reachability.swift документация - PullRequest
0 голосов
/ 23 апреля 2020

Документация показывает, что способ инициализации Reachability - это использование try!, вот пример из документации

//declare this property where it won't go out of scope relative to your listener
let reachability = try! Reachability()

reachability.whenReachable = { reachability in
    if reachability.connection == .wifi {
        print("Reachable via WiFi")
    } else {
        print("Reachable via Cellular")
    }
}
reachability.whenUnreachable = { _ in
    print("Not reachable")
}

do {
    try reachability.startNotifier()
} catch {
    print("Unable to start notifier")
}

Этот способ кажется небезопасным. Из-за Reachability.init звоните на SCNetworkReachabilityCreateWithAddress(nil, &zeroAddress) и этот парень может выбросить исключение. Поэтому init также может потерпеть неудачу. И тогда звонок на try reachability.startNotifier() вызовет sh, потому что reachability будет nil.

Не могли бы вы объяснить, почему, я считаю, на 100% уверены, что SCNetworkReachabilityCreateWithAddress(nil, &zeroAddress) никогда не будет "когда-либо", "когда-либо" терпеть неудачу?

Лучший,

Гас

...