首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用于reachabilityChanged的NotificationCenter addObserver不工作

问题描述:用于reachabilityChanged的NotificationCenter addObserver不工作。

解决方案:

  1. 首先,确保你已经正确导入了Reachability框架,并且在代码中引入了相关的头文件。
  2. 确保你已经正确设置了网络权限,以便应用程序可以访问网络状态。
  3. 确保你在正确的位置添加了观察者。通常,这应该在应用程序启动时进行,例如在AppDelegate的application(_:didFinishLaunchingWithOptions:)方法中。
  4. 确保你正确设置了观察者的selector方法。这个方法应该接收一个NSNotification对象作为参数,并且没有返回值。例如,你可以使用以下代码设置观察者:
代码语言:txt
复制
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(_:)), name: .reachabilityChanged, object: nil)
  1. 确保你的观察者方法被正确实现。在这个方法中,你可以处理网络状态的变化。例如,你可以使用以下代码实现观察者方法:
代码语言:txt
复制
@objc func reachabilityChanged(_ notification: Notification) {
    if let reachability = notification.object as? Reachability {
        if reachability.connection != .unavailable {
            // 网络可用
        } else {
            // 网络不可用
        }
    }
}
  1. 如果以上步骤都正确无误,但观察者仍然不起作用,那么可能是因为NotificationCenter的default实例被其他代码修改或替换了。你可以尝试使用自定义的NotificationCenter实例来添加观察者。例如,你可以使用以下代码创建一个新的NotificationCenter实例,并添加观察者:
代码语言:txt
复制
let customNotificationCenter = NotificationCenter()
customNotificationCenter.addObserver(self, selector: #selector(reachabilityChanged(_:)), name: .reachabilityChanged, object: nil)

这样,你就可以使用自定义的NotificationCenter实例来确保观察者正常工作。

希望以上解决方案对你有帮助!如果你需要更多关于云计算、IT互联网领域的问题解答,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 凭据工作 之前用于连接到******凭据无法工作。请输入新凭据。

    https://blog.csdn.net/huyuyang6688/article/details/49077665   在公司局域网远程自己计算机时候,突然无法远程了,提示“您凭据工作...之前用于连接到**凭据无法工作。...之前自己计算机是可以远程,但是今天远程时候突然就给了我这样惊喜。   从网上查到两种解决方法,小编用下面第一种方法搞定了,如果您用第一种方法搞不定,那请您尝试第二种方法。...第一种方法——编辑组策略 ----   如下图,打开本地组策略编辑器(运行gpedit.msc),计算机配置→管理模板→系统→凭据分配→允许分配保存凭据用于仅NTLM服务器身份验证: ?   ...win7、win8、win10等版本) 【 转载请注明出处——胡玉洋《您凭据工作 之前用于连接到**凭据无法工作

    57K40

    RDP你凭据工作RDP密码刷新

    你是否有过这样经历?...新电脑使用Microsoft账号登录后,RDP提示“你凭据工作” 在修改Microsoft账户密码后,RDP密码一直更新 在Microsoft账户开启无密码后,RDP无法使用 如果你不属于上述情况...check-whether-a-group-policy-object-gpo-is-blocking-rdp-on-a-local-computer 解决方案 思路/过程 因此问题,我曾经多次在微软官方社区已经微软官方英文学习网站中...我意识到,是因为没更新,本地和远程数据不一样,这个数据可能也不仅限于RDP密码 至此,我试着研究是否存在主动更新密码方法,于是我发现是StackExchange问题 我尝试了将账户类型转换为本地账户...RDP端口没有放行,检查后果真如此 于是就出现了首次登录时依然无法使用问题 然后恰巧我又注意到了最近新版本不能用Microsoft密码登录windows了(在一次争论中) 当我想要证明时候突然发现最近好像早已没有使用密码登录选项了

    12.7K30

    iOS 开发之路(登陆页键盘遮挡输入框问题)一

    在学习开发登陆页时候,遇到问题分享如下:     首先是swift 3.0 中,NotificationCenter 设置 selector 如下: @IBOutlet weak var...//注意这里要在storyboard对最底部控件设置约束,然后连线到.swift文件进行绑定   override func viewDidLoad() { super.viewDidLoad...() NotificationCenter.default.addObserver(self, selector:#selector(keyboardWillChange(notification...顺便吐槽一下,从安卓转过来,发现好多问题给出解决方案都是 Object-C ,而且 Swift 版本更迭,变化很大,网上很多解决方案经常需要自己微小调动才能正常使用。...给我这样新手带来好多麻烦。     注:开发环境是Xcode 8.1 测试平台是 iOS 10.0

    84530

    webpackwatch选项工作原因分析

    今天尝试将以前创建一个前端项目改为webpack编译,该项目使用了VueJS v2.0,原来是编写gulp脚本完成构建。很自然就直接用vue-cli来搞定这个事了。...使用vue-cli创建项目 因为以前用过webpack,而vue-cli创建项目底层其实还是使用webpack构建,所以使用起来还是很简单。...而vue-cli广大使用者并没有报告存在该问题。 个人感觉不应该是webpack这个功能有问题,还是应该是环境问题。...而我现在开发操作系统是Windows,那么就只剩下2个可能原因了。 windows路径问题 IDEsafe write特性干扰 试了一下终于发现是IDEsafe write特性这个问题造成。...IDE这个特性是为了安全地写文件,它会先将文件写到一个临时文件里,然后最后一个原子move操作将文件move到目标位置。但这样webpack检测文件变动原来逻辑就不工作了。

    4.1K60

    设计模式 - 命令模式&中介者模式&组合模式~AppDelegate 解耦

    self.listeners = listeners super.init() subscribe() } deinit { NotificationCenter.default.removeObserver...(self) } /// 订阅生命周期事件 private func subscribe() { NotificationCenter.default.addObserver...onAppWillEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil) NotificationCenter.default.addObserver...(onAppDidEnterBackground), name: UIApplication.didEnterBackgroundNotification, object: nil) NotificationCenter.default.addObserver...对于AppDelegate而言,其内部不会再有任何业务上逻辑,并且因为协议默认实现,已经将任务默认分发到各个Leaf中,其剩余任务仅仅就是提供Leaf列表,并且考虑到在组件化环境中使用,直接引用各

    61020

    用于高端实时媒体工作RIST

    本文来自RIST Forum at IBC2019一篇演讲。演讲主题是用于高端实时媒体工作RIST以及它如何在高端工作流中发挥作用。...演讲者首先对比了高端媒体和低端媒体工作流,当我们查看不同媒体工作流时,本质上是内容值联系,比如想要质量,生产预算和基础设施预算。...对于高端工作流,内容很有价值,有很高质量要求,因此有很高生产预算和高基础设施预算,可以负担对基础设施要求。 最终目标是在任何类型基础设施上提供无损传输。...可以有一个普通延迟和更高带宽或者基础带宽和更低延时。 演讲者给出了用于高端工作RIST应用。对于最后一公里扩展情况,不要使用较差质量连接。...互联网传输价值正在上升,并可用于主要应用;随着云产品成为现实,Main profile对于支持高端工作流程非常重要;RIST Main Profile适用于各种使用案例,包括服务捆绑轻量级压缩和4K

    86110

    远程桌面失败:你凭据工作

    然后按照以下操作,将默认设置“仅来宾—本地用户以来宾身份验证”,更改为“经典:本地用户以自己身份验证”。 ? ? 方法二: 更改远程桌面服务端一个远程服务设置就可以了。...方法三: Win+R,输入gpedit.msc,打开本地组策略编辑器,点击“计算机配置”——“管理模板”——“系统”——“凭据分配”,双击右边窗口“允许分配保存凭据用于仅 NTLM 服务器身份验证”...第二步:在弹出窗口中选中“已启用”,再单击“显示”,在弹出窗口中,输入“TERMSRV/*”。...(确保 TERMSRV 为大写)   注:“显示内容”对话框中服务器名称格式为:TERMSRV/computername,computername变量可以是一台特定远程计算机名称(例如,TERMSRV.../myremotepc),或者您可以使用星号(*)包含一组计算机(例如,TERMSRV/* 或 TERMSRV/*.corp.com),其中包含计算机名称应该与“远程桌面连接”对话框中“计算机”框中输入名称完全一致

    9.6K10
    领券