我使用NSXMLParser来解析ext。 API数据。我还使用Singleton共享数组var来维护从ext API检索的信息。
此信息是动态的,用户在UISearchBar
中输入任何内容即会更改现在,只要用户输入任何内容,我就会使用[retrieveArray removeAllObjects]清除现有的数组内容;
因此,这会根据搜索栏中的当前条款刷新retrieveArray。
如果用户输入缓慢,这可以正常工作。但是,如果用户输入速度非常快,我会看到重复的搜索结果。我假设这是因为retrieveArray内容没有足够的时间来清除。
我仍在尝试解决此问题。请提出一些补救措施。
请你帮我解决。
答案 0 :(得分:0)
不,我不认为是这种情况,除非你在一个单独的线程中搜索并在另一个线程中清除数组。如果没有,那么搜索逻辑中可能存在错误。
答案 1 :(得分:0)
首先,我认为单身方法可能不是最好的方法。但请确保您正在同步对阵列的所有可变访问。不要让单身人士为任何对象及其母亲(NSMutableArray
)返回super
,而是需要使用addObject
,removeObject
,{{1}等方法使用clear
块或您决定的任何锁定。我仍然看到这种方法的问题,因为调用addObject,remove和clear的代码也都需要同步。也许考虑每个自动完成请求您使用委托或发布包含时间戳的@synchronize
,用户输入的字符以获取数据,以及NSNotification
结果。那时您可以看到响应是否仍然有效,丢弃任何无效响应,并仅使用最新有效NSArray
的内容更新用户