![]() |
1
2
好吧,我花了8个小时来阅读外面的每一个例子。 我开始意识到,我必须做一些“概念验证”代码,看看是否在为“每一个”击键构建新的线程时会出现速度问题。 结果表明,使用nsoperation和nsoperationqueue在速度方面,特别是在简单性和抽象性方面都是足够的。 在每次按键后调用:
这主要是为了阻止代码表单开始搜索间隔小于800毫秒的击键。 (如果不是小触摸键盘的话,我会降低很多)。 如果允许超时,则是搜索的时间。
取消当前在队列中的所有操作。每次新搜索 开始时,它确保已经在进行的搜索操作按顺序关闭,还确保只有1个线程处于“未取消”状态。 IssearchOperation的实现非常简单:
有两个主要步骤:从Web服务下载数据和解析。
每次搜索后,我都会检查搜索是否被取消
我可能需要为Web服务和解析构建某种类型的超时,以防止队列在 起亚 对象。 但现在这真的是闪电般的快,在我的测试中,我正在搜索一本16000条条目字典,并让xcode nslog将其记录到屏幕上(很好地减慢了速度),每800毫秒。我通过计时器发出一个新的搜索字符串,从而在旧的搜索字符串完成nslog结果到屏幕循环之前将其取消。 nsOperationQueue处理这一点时没有出现任何问题,而且执行的两个线程中不会超过几毫秒。UI完全不受在后台运行的上述任务的影响。 |
![]() |
WkWk · Apple Watch动作通知不起作用 2 年前 |
![]() |
Otavio Miguel · 在手机中保留我自己未发布的ios应用 2 年前 |
![]() |
Nico Passaglia · 移动键盘向上移动站点 6 年前 |