• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 带有 EKEventStoreChanged 通知的 NotificationCenter 使用不同的通知多次调用

[复制链接]
菜鸟教程小白 发表于 2022-12-11 18:04:40 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

首先请注意,我没有像其他各种问题中所述那样多次注册为观察员。

当我在 native 日历应用程序中更改某些内容并返回到我的应用程序时,选择器会被调用 4-5 次并发出不同的通知。

viewDidLoad 中,我删除所有可能的观察者并注册一次 agian:

NotificationCenter.default.removeObserver(self)
NotificationCenter.default.addObserver(self, selector: #selector(reloadModelData(notification), name: Notification.Name.EKEventStoreChanged, object: nil)

对应的方法:

@objc private func reloadModelData(notification: NSNotification) {
    debugPrint("method called \(notification)")
}

导致这个输出

"method called NSConcreteNotification 0x170246300 {name = EKEventStoreChangedNotification; object = ; userInfo = {\n EKEventStoreChangedObjectIDsUserInfoKey = (\n \"x-apple-eventkit:///Location/p259707\",\n \"x-apple-eventkit:///Event/p264955\"\n );\n}}" "method called NSConcreteNotification 0x174258840 {name = EKEventStoreChangedNotification; object = ; userInfo = {\n EKEventStoreChangedObjectIDsUserInfoKey = (\n \"x-apple-eventkit:///Location/p259707\",\n \"x-apple-eventkit:///Event/p264955\"\n );\n}}" "method called NSConcreteNotification 0x17024b250 {name = EKEventStoreChangedNotification; object = ; userInfo = {\n EKEventStoreChangedObjectIDsUserInfoKey = (\n \"x-apple-eventkit:///Location/p259707\",\n \"x-apple-eventkit:///Event/p264955\"\n );\n}}" "method called NSConcreteNotification 0x174253b00 {name = EKEventStoreChangedNotification; object = ; userInfo = {\n EKEventStoreChangedObjectIDsUserInfoKey = (\n \"x-apple-eventkit:///Location/p259707\",\n \"x-apple-eventkit:///Event/p264955\"\n );\n}}"

有谁知道如何解决这个问题。意思是在重新进入应用时只收到该观察者的一次调用?



Best Answer-推荐答案


我猜,这就是它的工作原理,日历会向您发送有关您所做的所有原始更改的通知。

The Apple's documentation建议通过调用 refresh 检查您正在访问的提醒和事件。如果它返回 true,则无需重新获取它们。所以多个通知到达不会造成太大问题。

我还建议在 viewWillAppear(_ 中订阅通知并在 viewDidDisappear(_ 中取消订阅。当然可能会有异常(exception),但通常你不想在屏幕不活动时处理它们。

关于ios - 带有 EKEventStoreChanged 通知的 NotificationCenter 使用不同的通知多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40613478/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap