0

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

在网络方面,我们有一个作为 Singleton 的类,它处理每个视图的 NSURLConnection,以便检索每个表视图所需的数据。

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

我们怀疑问题在于我们目前仅在 Singleton 上处理“活动视图”的单个委托,我们应该更改它以支持基于本机邮件应用程序的行为,您可以在其中更改视图,而数据在每个视图中都被要求分别正确加载和更新。

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

是否有人对处理多个异步 NSURLConnections 以更新多个视图(包括父视图和子视图)的正确方法有任何建议,几乎同时在用户交互的同时进行?理想情况下,我们不想按照我们的建议阻止 UI 或禁用按钮。

感谢您的时间!

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

4

2 回答 2

2

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

在 github 上有一个项目,NSOperation-WebFetches-MadeEasy,它使这变得尽可能轻松。你在你的类中加入了一个类——OperationsRunner——它在 OperationsRunner.h 中带有一个“如何使用我”,以及两个骨架 NSOperations 类,一个是另一个的子类,子类显示如何获取图像。

我相信其他人会发布其他解决方案——这几乎是一个开始的问题,因为有大量的库和项目这样做。也就是说,OperationsRunner 是 100 多行代码,操作也差不多,所以它真的很容易阅读、理解、使用和修改。

于 2012-08-24T16:30:35.787 回答
0

你说你的单身人士有一个代表。当多个对象对结果感兴趣时,委派是不合适的。如果您希望继续使用单例获取数据,则必须将模式切换为基于通知​​。您的单身人士将负责确定哪个连接对应于哪个任务,并选择要发布的适当通知。

如果您仍然需要这方面的帮助,请告诉我,我会尝试发布一些示例代码。

于 2012-08-26T22:21:42.350 回答