Open zhousj888 opened 4 years ago
是的,会有这种问题。
是的,会有这种问题。
是的,会有这种问题。
是的,会有这种问题。
@zhousj888 看了眼代码,应该能实现多线程ping的吧?这不过作者用了单例,所以开了多线程也是没用的。PhonePing对象就一个。稍微改改就可以了
当手机连着热点,热点几乎没有网络,这个时候 ping 的话阻塞了 我在 SwiftUI View 的 onAppear 里执行了 ping,此时当上个界面 navigation 进来的时候,页面都阻塞了,请问是否有什么好的解决方法
现在暂时是这样死缓了。。能用
DispatchQueue.init(label: "com.gethostname").async {
if gethostbyname(hostname) != nil {
DispatchQueue.main.async {
// do soming, eg: ping , start download ..
}
}
}
每次ping一个域名,phonePingServise会实例化一个PhonePing对象,然后PhonePing会执行gethostbyname这个阻塞的方法,当这时候又ping了一个域名,之前那个phonePing就被释放了,然后当他继续执行gethostbyname之后的逻辑的时候,会发现self已经被dealloc了,产生野指针错误