2014-07-07 92 views
1

我的應用程序允許用戶創建一個項目列表在電子商務網站上。用戶通過多個屏幕添加圖像和信息,直到他們需要在商店上創建商品。afnetworking異步後臺任務處理響應當viewcontroller更改

最後上傳畫面具有使用AFNetworking有兩個服務調用一個的UIViewController:

1)調用的圖片上傳互聯網服務和返回某個ID的。它在成功時稱(2)。

2)使用這些返回的ID作爲請求的一部分調用另一個服務。

此過程在用戶點擊提交按鈕時開始。

我想什麼發生的是以下幾點:

的用戶點擊提交和過程在後臺啓動 當前的故事板現場返回到開始屏幕允許用戶同時先前創建的另一個項目仍在運行。

由於服務調用和處理來自它們的響應的代碼在UIViewController中,一旦場景發生變化,UIViewController將不再在棧上運行,因此服務響應等會發生什麼?

如果我創建了一個單獨的類來完成這項工作,那麼當場景發生變化時,我將放棄對象引用。如果方法仍在處理,它會被垃圾收集?

我應該使用Grand Central Dispatch將其粘貼在後臺線程上嗎?

+0

你爲什麼不讓獨立的班級管理網絡作爲單身人士?它將始終具有對象引用。 – Ryan

回答

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] 

並調用instan ce方法如下。

[[NetWrapper shared] requestVersion]; 
+0

非常感謝,這實際上是我在想什麼,但並不完全知道如何將其應用於目標c。欣賞答覆中的努力! – sapatos