我试图弄清楚是否可以取消对 EventKit 数据库的查询。我使用与某一周内的所有事件匹配的谓词查询 EventKit。此查询可能需要一些时间,具体取决于返回的事件数。
我为什么要这个?好吧,在我的 iPhone 应用程序中,用户浏览了他日历中的星期。每次向用户显示新的一周时,应用程序都必须加载该周的所有事件。因为这需要几百毫秒,所以应用程序没有应有的响应。用户基本上不得不慢一点浏览,因为用户界面每次浏览到另一个星期时都会停顿一会儿。
我已经使用“performSelectorInBackground”在后台线程中运行查询。这仍然使用户界面停滞不前。我正在考虑的解决方案是,每当用户决定浏览另一周时,都会取消当前的 EventKit 查询。这样做的缺点可能是用户有时不会立即看到该周的事件,因为查询已被取消,但 UI 希望始终保持高度响应。
那么这有可能吗?有人知道吗?我可以取消 EventKit 查询吗?也许通过停止它正在运行的线程?欢迎任何建议!