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

ios - 为什么 NSMetadataQueryDidUpdateNotification 被快速连续调用多次?

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

为了监控我的 iCloud 容器中的文件更改,我已经注册了

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selectorselector(processiCloudUpdates
                                             name:NSMetadataQueryDidUpdateNotification
                                           object:nil];

理想情况下,每当我收到已进行更新的消息时,我都想打开我的每个 UIDocs 并检查设置是否已更改。这很好,如果 NSMetadataQueryDidUpdateNotification 只被调用一次。但是,它被触发了好几次(我没有忘记 removeObserver 等并且有几个实例正在运行),因此每次更新通知时都加载所有文件非常不切实际被解雇(如果我有 5 个文件并且这被调用了 4 次,我会快速连续打开 20 个 UIDocs)。例如,如果我更新一个文件(并且在我的无处不在的容器中只有一个文件),就会发生这种情况:

2012-07-05 10:51:39.565 Meernotes[7842:707] ... NSMetadataQuery update
2012-07-05 10:51:42.468 Meernotes[7842:707] ... NSMetadataQuery update
2012-07-05 10:51:45.216 Meernotes[7842:707] ... NSMetadataQuery update
2012-07-05 10:51:47.036 Meernotes[7842:707] ... NSMetadataQuery update

有没有其他方法可以确定文件何时更改? NSFileVersion 也没有多大帮助。



Best Answer-推荐答案


NSMetadataQueryDidUpdateNotification 每次在 NSMetadataQuery 中的任何 NSMetadataItem 结果更新时发出。它包括部分上传或下载进度。因此,在此通知处理期间尝试打开 UIDocument 实例是错误的。

相反,您可以通过观察 NSMetadataItem 的属性值来确定文档下载的时间,然后将其排队等待打开。

不要忘记处理 NSMetadataQueryDidFinishGatheringNotification。它在接收者完成查询的初始结果收集阶段时发布

关于ios - 为什么 NSMetadataQueryDidUpdateNotification 被快速连续调用多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11341992/

回复

使用道具 举报

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

本版积分规则

关注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