Swift 3 UnsafePointer($0) no longer compile in Xcode 8 beta 6

From the Release Notes of Xcode 8 beta 6:

  • An Unsafe[Mutable]RawPointer type has been introduced, replacing Unsafe[Mutable]Pointer<Void>. Conversion from UnsafePointer<T> to
    UnsafePointer<U> has been disallowed. Unsafe[Mutable]RawPointer
    provides an API for untyped memory access, and an API for binding
    memory to a type. Binding memory allows for safe conversion between
    pointer types. See bindMemory(to:capacity:), assumingMemoryBound(to:),
    and withMemoryRebound(to:capacity:). (SE-0107)

In your case, you may need to write something like this:

let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {
    $0.withMemoryRebound(to: sockaddr.self, capacity: 1) {zeroSockAddress in
        SCNetworkReachabilityCreateWithAddress(nil, zeroSockAddress)
    }
}

Leave a Comment