UISearchBar、textDidChange 事件、MultipleNSUrlConnection、tableView 崩溃

Posted

技术标签:

【中文标题】UISearchBar、textDidChange 事件、MultipleNSUrlConnection、tableView 崩溃【英文标题】:UISearchBar, textDidChange events, MultipleNSUrlConnection, crashes on tableView 【发布时间】:2016-08-12 12:16:05 【问题描述】:

在你的 iPhone 应用程序中。

用于搜索功能。我正在使用 UISearchBar 和 WebService 调用。

每当UISearchBar 'TextDidChange' 发生时,Web 服务调用就会发生。

通常我们的输入速度非常快,所以会发生很多 Web 服务调用,我正在使用 NSURLConnection,并且我在 Finished Loading 上加载表格。

例如, M 的 Web 服务调用 网络服务调用 Mo WebService 调用 Mor

这里,问题是一个 web 服务将要完成,在另一个 web 服务调用之间。这会造成混乱。

到这里,我解决了写作的问题。

**[connectionSearch cancel];**   

        connectionSearch=[[NSURLConnection alloc] initWithRequest:request delegate:self];

【问题讨论】:

【参考方案1】:

将这段代码写在textDidChange调用Webservice的方法中

[NSObject cancelPreviousPerformRequestsWithTarget:self];  
[self webserviceCallMethod];  

你也可以在cancelPreviousPerformRequestsWithTarget:self之后调用如下服务

[self performSelector:@selector(webserviceCallMethod:) withObject:searchText afterDelay:0.3f]; // after delay can be an anything that helps.  

不要忘记从数组中删除所有对象,然后再将对象添加到数组以响应您的 Web 服务。 (UITableView 单元格中使用的数组)

希望对你有帮助。

【讨论】:

我同时有两个不同类型的网络服务调用。那么,它会工作 NSObject cancelPreviousRequest,而是我做了类似的事情。看我的回答。 好的,很高兴知道新方法。仅用于 NSURLConnection 的信息应用程序将不再被 Apple 批准。参考:***.com/a/37693532/5012384 它受支持,如您的链接中所述。请参阅您帖子中的第一个答案。并感谢分享上述链接。【参考方案2】:

我改变了代码,

  **[connectionSearch cancel];**   

  connectionSearch=[[NSURLConnection alloc] initWithRequest:request delegate:self];

因此,每当发生相同的 Search Web 服务调用时,如果调用未完成,调用将被取消并发生新的 Web 服务调用。

【讨论】:

它消除了我在 connectionDidFinishLoading 上调用的 tableview reloaddata 的混乱。谢谢

以上是关于UISearchBar、textDidChange 事件、MultipleNSUrlConnection、tableView 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

帮助 UISearchBar,位于 UITableView 的第一个单元格?不会进入 searchBar:textDidChange 方法

UICollectionView 窃取焦点

UIKit SearchBar 过滤 textDidChange 中的两个数组

为啥我不能在 iOS 中 RemoveAllObjects 的 NSMutableArray?

UISearchBar

单击 UISearchBar 的取消按钮后,如何使用 UISearchBar 刷新我的 UITableView?