我目前正在开发一款应用程序,需要检查可达性。
因此,我开始查找相关资料并找到了DDG和苹果公司的代码。我决定使用苹果最新的可达性代码。
我导入了这个代码,并按照苹果公司示例中的建议,采用以下方式进行注册:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationHandler:) name:kReachabilityChangedNotification object:nil];
//check for local connection and start notifier
client = [[Reachability reachabilityForInternetConnection] retain];
[client startNotifier];
//check for server connection and start notifier
server = [[Reachability reachabilityWithHostName:SERVER_HOST_NAME] retain];
[server startNotifier];
//check for other server and start notifier
otherServer = [[Reachability reachabilityWithHostName:OTHER_SERVER_HOST_NAME] retain];
[otherServer startNotifier];
当我运行这个应用程序时,我发现这段代码开始阻塞UI(阻塞主线程)。在主机名解析之前,我无法与其他UI元素交互。现在我知道苹果已经警告关于DNS解析并使其异步化。
我的问题是,我该如何继续进行异步操作?
我是否需要生成另一个线程并保持其运行状态,以便不“释放”Reachability对象?
感谢您的帮助! :)