我的应用程序允许用户创建要在电子商务网站上列出的项目。用户通过多个屏幕添加图像和信息,直到他们需要在商店中创建项目。
最终上传屏幕有一个UIViewController使用AFNetworking有两个服务来调用它:
1)调用图片上传webservice并返回一些ID。成功时,它会调用(2)。
2)使用这些返回的ID作为请求的一部分来调用另一个服务。
当用户点击“提交”按钮时,将启动此过程。
我希望发生以下情况:
用户单击“提交”,该过程将在后台启动 当前故事板场景返回到开始屏幕,以允许用户在前一个项目仍在运行时创建另一个项目。
由于服务调用和处理响应的代码在UIViewController中,一旦场景发生变化,UIViewController将不再在堆栈上运行,那么服务响应会发生什么?
如果我创建一个单独的类来完成工作,我会在场景发生变化时松开对象引用。如果该方法仍处理,是否会被垃圾收集?
我是否应该使用Grand Central Dispatch将其保留在后台线程中?
答案 0 :(得分:1)
有关详细信息,请参阅此示例。
我通常有一个名为NetWrapper的类来管理整个网络相关的事情。
<强>·H 强>
@interface NetWrapper : NSObject
+ (instancetype)shared;
#pragma mark - APIs
- (void)requestVersion;
@end
<强>的.m 强>
static NetWrapper *_netWrapper;
@implementation NetWrapper
+ (instancetype)shared
{
if(_netWrapper == nil)
{
_netWrapper = [[NetWrapper alloc] init];
}
return _netWrapper;
}
#pragma mark - APIs
- (void)requestVersion
{
// do something
}
如果您有像这样的单例类,那么您总是可以使用
创建相同的实例[NetWrapper shared]
并调用如下的实例方法。
[[NetWrapper shared] requestVersion];