当viewcontroller更改时,afnetworking异步后台任务处理响应

时间:2014-07-07 04:38:23

标签: objective-c afnetworking

我的应用程序允许用户创建要在电子商务网站上列出的项目。用户通过多个屏幕添加图像和信息,直到他们需要在商店中创建项目。

最终上传屏幕有一个UIViewController使用AFNetworking有两个服务来调用它:

1)调用图片上传webservice并返回一些ID。成功时,它会调用(2)。

2)使用这些返回的ID作为请求的一部分来调用另一个服务。

当用户点击“提交”按钮时,将启动此过程。

我希望发生以下情况:

用户单击“提交”,该过程将在后台启动 当前故事板场景返回到开始屏幕,以允许用户在前一个项目仍在运行时创建另一个项目。

由于服务调用和处理响应的代码在UIViewController中,一旦场景发生变化,UIViewController将不再在堆栈上运行,那么服务响应会发生什么?

如果我创建一个单独的类来完成工作,我会在场景发生变化时松开对象引用。如果该方法仍处理,是否会被垃圾收集?

我是否应该使用Grand Central Dispatch将其保留在后台线程中?

1 个答案:

答案 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];