我和我的团队目前是Objective-C(不到3个月)的新手开发人员,致力于开发一个基于标签的简单应用程序,该应用程序具有网络功能,其中包含带有表格视图的导航控制器和相应的详细视图。每个标签。目标是iOS 4 sdk。
在网络方面,我们有一个单独的类,它作为Singleton处理每个视图的NSURLConnection,以便检索每个表视图所需的数据。
功能正常,我们可以正确检索数据,但前提是用户在请愿结束或同一请愿按钮(例如:登录按钮)再次按下时才更改视图。否则,可能会发生不同的错误。例如,只应在其中一个导航控制器的根视图上显示的错误消息显示在详细视图中,反之亦然。
我们怀疑问题是我们目前只在Singleton上处理“活动视图”的单个委托,我们应该更改它以支持基于本机Mail应用程序的行为,您可以在其中更改视图每个视图中要求的数据会分别正确加载和更新。
我们已经查看了stackoverflow和其他网站,但我们还没有找到合适的方法。我们正在考虑使用NSOperationQueue并将NSURLConnections包装在NSOperation上,但我们不确定这是否是正确的方法。
有没有人对处理多个异步NSURLConnections的正确方法提出任何建议,以便在用户交互的时候几乎同时更新多个父级和子级视图?理想情况下,我们不希望像我们推荐的那样阻止UI或禁用按钮。
感谢您的时间!
编辑 - 忘记添加,我们的客户设置的项目限制之一是我们只能使用本机iOS sdk网络框架而不是ASIHTTPRequest框架或类似。同时,我们也忘了添加我们没有上传任何信息,我们只是从WS中检索它。
答案 0 :(得分:2)
一个建议是使用NSOperations和NSOperationsQueue。这种安排的好处是你可以快速取消任何进行中或排队的工作(如果用户点击后退按钮。
github上有一个项目NSOperation-WebFetches-MadeEasy,这使得它尽可能地无痛。您在类中包含一个类 - OperationsRunner - 它在OperationsRunner.h中带有“如何使用我”,以及两个骨架NSOperations类,一个是另一个类的子类,子类显示如何获取图像。
我确信其他人会发布其他解决方案 - 由于有大量的图书馆和项目正在这样做,因此几乎是一个问题。也就是说,OperationsRunner有100多行代码,操作大致相同,所以这很容易阅读,理解,使用和修改。
答案 1 :(得分:0)
你说你的单身人士有一个代表。当多个对象对结果感兴趣时,委派是不合适的。如果您希望继续使用单例来获取数据,则必须根据通知切换模式。您的单身人士将负责确定哪个连接对应于哪个任务,并选择要发布的适当通知。
如果您仍然需要帮助,请告诉我,我会尝试发布一些示例代码。