objective-c - AFNetworkReachabilityManager:如果我设置 setReachabilityChangeBlock 两次或更多次会发生什么?
问题描述
我通过两种不同的方法设置它:
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
if(status == AFNetworkReachabilityStatusNotReachable ||
status == AFNetworkReachabilityStatusUnknown){
self.liveTimesBar.hidden = YES;
//In case we regain connection
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
if(status == AFNetworkReachabilityStatusReachableViaWWAN ||
status == AFNetworkReachabilityStatusReachableViaWiFi){
[self extractedRelevantFlightNumbers];
}
}];
}
}];
所以我的想法是,当我们失去互联网时,这个 liveTimesBar 会被隐藏。但同时注册通知,如果我们再次恢复互联网。我用两种不同的方法来处理不同的东西。
所以我的问题:
如果这些块之一被执行,那么它是“完成”还是如果发生此事件会再次执行?或者它只是为一个连接更改设置?
如果我从两种不同的方法注册此通知,它们都会执行吗?
解决方案
共享管理器是指一个单例实例,除非setReachabilityStatusChangeBlock
将代码块推送到某个数组中,并且在调用时迭代数组并调用每个存储的块(情况并非如此)。块将存储在一个变量中,并且像所有变量一样,它将保存最后一次更新。所以你可以放心地期待你通过的最新块被调用。
推荐阅读
- php - 是否可以使用从 PHP 中的 SQL 提取的数据将默认选择添加到在 for 循环中生成的下拉菜单中?
- android - 无法在 android 11 的 /storage/emulated/0/Android/data/myproject.data/data 中创建目录
- python-chess - 合法用户使用 python-chess 移动
- python - 使用 SeleniumRequest 时遇到 scrapy-selenium 库的问题
- javascript - 我在使用 .play 函数时遇到了一些问题 javascript
- dask - 在旧工人死亡后添加新工人时,如何重新提交 dask 工作(来自以前死去的工人)?
- flutter - 从表日历颤动中获取选定日期的值数据表
- mysql - Mysql 5.7 - 如何执行需要前一个子查询结果的多个子查询?
- reactjs - 创建反应应用程序时如何解决套接字超时
- javascript - 我的 laravel vue js 项目中的所有 Put & Delete 路由方法抛出 302 错误