Apple устарела SCNetworkReachabilityCreateWithAddress, и хотя в документации не указано, что SCNetworkReachabilityGetFlags также устарела, похоже, что оба они скоро исчезнут. Apple не предлагает преемника, поэтому мой вопрос: как лучше всего добиться аналогичного результата для проверки достижимости? Вот код, который я использовал:
var currentReachabilityStatus: ReachabilityStatus {
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(MemoryLayout<sockaddr_in>.size)
zeroAddress.sin_family = sa_family_t(AF_INET)
guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
SCNetworkReachabilityCreateWithAddress(nil, $0)
}
}) else {
return .notReachable
}
var flags: SCNetworkReachabilityFlags = []
if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) {
return .notReachable
}
...
Мой текущий код работает, но эта функция удаляется.
@ElTomato будет помечен как устаревший с iOS 17.4.





Рекомендуется использовать сетевой NWPathMonitor. Объяснение метода
Пример:
import Network
class Reachability {
let monitor = NWPathMonitor()
let queue = DispatchQueue.global(qos: .background)
init() {
monitor.pathUpdateHandler = { path in
if path.status == .satisfied {
// network reachable
} else {
// network not reachable
}
}
monitor.start(queue: queue)
}
}
Я использую
SCNetworkReachabilityCreateWithAddress, но не вижу для него символа предупреждения об устаревании, даже после того, как я изменил цель развертывания на iOS 17.0.