Документация показывает, что способ инициализации 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)
никогда не будет "когда-либо", "когда-либо" терпеть неудачу?
Лучший,
Гас