【发布时间】:2014-07-22 21:17:12
【问题描述】:
我正在尝试使用 Swift 代码进行简单的 DNS 查找。到目前为止,我有
if host != "\0" {
let hostRef = CFHostCreateWithName(kCFAllocatorDefault, host.bridgeToObjectiveC()).takeRetainedValue()
var resolved = CFHostStartInfoResolution(hostRef, CFHostInfoType.Addresses, nil)
let addresses = CFHostGetAddressing(hostRef, &resolved).takeRetainedValue() as NSArray
for address: AnyObject in addresses {
println(address) // address is of type NSData.
}
}
根据Convert NSData to sockaddr struct in swift。 (host 是 NSString。)
但是,在执行if 语句并打印address 数据之后,在第一行以EXC_BAD_ACCESS (code=EXC_I386_GPFLT) 退出之前,我的调试器日志打印<10020000 4a7de064 00000000 00000000>。我想要得到的只是一个带有 IP 地址的字符串,或者如果主机不存在,则为一个空字符串。
【问题讨论】:
-
在哪一行崩溃?
-
@duci9y:对不起,第一行(代码执行后,所以技术上是
if语句的最后一行/结尾)。我会在问题中澄清这一点。 -
我不确定你是否正确。在每一行代码上设置断点,并告诉我们最后一行成功执行的信息,以及它执行的次数。
-
@duci9y:它肯定会执行到最后并循环通过
for循环11 次。然后线程指示器转到开头的if语句并崩溃。 -
感谢回答我类似问题的 Martin R。看一看!我希望这对你也有帮助。 stackoverflow.com/questions/25890533/…
标签: macos dns swift nsdata nslookup