NetService получает правильный тип Inet во время отладки, но не работает с заархивированным IPA

Я работаю с netsevices и использую приведенную ниже функцию для получения адреса IPV4 и IPV6. Получение правильных адресов при отладке или простом файле IPA. Но ПОСЛЕ АРХИВИРОВАНИЯ я не получаю правильный тип INET.

Это странная проблема.

func netServiceDidResolveAddress(_ sender: NetService) {
        if let addresses = sender.addresses, addresses.count > 0 {
            for address in addresses {
                let data = address as NSData
                
                let inetAddress: sockaddr_in = data.castToCPointer()
                if inetAddress.sin_family == __uint8_t(AF_INET) {
                    if let ip = String(cString: inet_ntoa(inetAddress.sin_addr), encoding: .ascii) {
                        // IPv4
                        bonjourIP = ip
                    }
                } else if inetAddress.sin_family == __uint8_t(AF_INET6) {
                    let inetAddress6: sockaddr_in6 = data.castToCPointer()
                    let ipStringBuffer = UnsafeMutablePointer<Int8>.allocate(capacity: Int(INET6_ADDRSTRLEN))
                    var addr = inetAddress6.sin6_addr
                    
                    if let ipString = inet_ntop(Int32(inetAddress6.sin6_family), &addr, ipStringBuffer, __uint32_t(INET6_ADDRSTRLEN)) {
                        if let ip = String(cString: ipString, encoding: .ascii) {
                            // IPv6
                            bonjourIP = ip
                        }
                    }
                    
                    ipStringBuffer.deallocate(capacity: Int(INET6_ADDRSTRLEN))
                }
            }
        }
    }

person anshul king    schedule 14.05.2018    source источник
comment
Он работает для IPv6? и не работает должным образом для IPv4? правильно?   -  person aBilal17    schedule 14.05.2018
comment
Он не работает для ОБОИХ, хотя сборка находится в архиве. В противном случае это работает. @aBilal17   -  person anshul king    schedule 14.05.2018
comment
Откуда взялся метод castToCPointer()?   -  person Martin R    schedule 14.05.2018
comment
Лучше использовать getnameinfo(), чтобы получить IP-адрес в виде строки, см. пример stackoverflow.com/a/25891306/1187415.   -  person Martin R    schedule 14.05.2018