iphone - iOS 异步 NSURLConnection 在与调用它的 View 不同的 View 上触发行为

标签 iphone ios ipad

我和我的团队目前是 Objective-C 的新手开发者(不到 3 个月),致力于开发一个简单的基于选项卡的应用程序,该应用程序具有网络功能,其中包含一个带有表格 View 的导航器 Controller 和相应的详细 View 每个选项卡。目标是 iOS 4 SDK。

在网络方面,我们有一个单独的类作为单例运行,它处理每个 View 的 NSURLConnection,以便为每个 TableView 检索我们需要的数据。

该功能运行良好,我们可以正确检索数据,但前提是用户在请愿书结束或再次按下同一请愿书的按钮(例如:登录按钮)之前不更改 View 。否则,可能会发生不同的错误。例如,应该只显示在其中一个导航 Controller 的 Root View 上的错误消息出现在详细 View 上,反之亦然。

我们怀疑问题是我们目前只处理“事件 View ”单例上的单个委托(delegate),我们应该更改它以支持基于 native 邮件应用程序的行为,您可以在其中更改 View 同时每个 View 中要求的数据都会分别正确加载和更新。

我们查看了 stackoverflow 和其他网站,但没有找到合适的方法来遵循。我们正在考虑使用 NSOperationQueue 并将 NSURLConnections 包装在 NSOperation 上,但我们不确定这是否是正确的方法。

有没有人对处理多个异步 NSURLConnections 以更新多个 View (包括父 View 和 subview )的正确方法有任何建议,几乎同时在用户交互时一时兴起?理想情况下,我们不想像我们建议的那样阻塞 UI 或禁用按钮。

感谢您的宝贵时间!

编辑 - 忘了补充,我们客户设置的项目限制之一是我们只能使用原生 iOS sdk 网络框架,不能使用 ASIHTTPRequest 框架或类似框架。同时,我们也忘了补充一点,我们没有上传任何信息,我们只是从WS中获取。

最佳答案

一个建议是使用 NSOperations 和 NSOperationsQueue。这种安排的好处是您可以快速取消任何正在进行或排队的工作(如果用户点击后退按钮。

github上有个项目,NSOperation-WebFetches-MadeEasy这使得它尽可能地无痛。您将一个类合并到您的类中 - OperationsRunner - 它在 OperationsRunner.h 中带有“如何使用我”,以及两个骨架 NSOperations 类,一个是另一个的子类,子类显示如何获取图像。

我相信其他人会发布其他解决方案——这几乎是一个入门问题,因为有大量的图书馆和项目在做这件事。也就是说,OperationsRunner 有 100 多行代码,操作也差不多,因此非常易于阅读、理解、使用和修改。

关于iphone - iOS 异步 NSURLConnection 在与调用它的 View 不同的 View 上触发行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12113184/

相关文章:

ios - 对与套接字相关的 iOS 内核 panic 进行分类

iphone - 当我打开 iPhone 3G 时,应用程序第二次在闪屏中崩溃

iphone - 检测设备是否超出 wifi 范围

ios - ios程序可以控制现实生活中的机器吗?

iPhone 的 PHP RESTful Web 服务

ios - 是否可以设置 AVPlayer 以允许设备在视频播放期间进入休眠状态?

iphone - 如何获取关系键

iphone - 将后退按钮添加到 View Controller

ios - 动态改变状态栏文字颜色

iphone - 滑动运动检测