2012-05-22 24 views
0

我有一個程序,進展如下。我稱之爲getCharacteristics的方法。此方法通過NSURL連接(在另一個文件中完成的所有網絡代碼)連接到遠程服務器,當它接收到響應時,它使方法回調到原始類。這個原始類然後解析數據(xml)並將其內容存儲爲映射。在iOS中,NSURL或NSXML是否跨越一個新的線程?

我遇到的問題是,似乎在這個事務中的某個地方另一個線程正在被催生。

下面是示例代碼顯示我在做什麼:

@property map 

- (void) aMethod 
{ 
    [[WebService getSingleton] callWebService: andReportBackTo: self] 
    Print "Ready to Return" 
    return map; 
} 
- (void) methodThatIsReportedBackToAfterWebServiceRecievesResponse 
{ 
    //Parse data and store in map 
    Print "Done Parsing" 
} 

,我運行到它可以完全建立之前,正在返回地圖的問題。此外,「準備返回」正在「完成解析」之前打印,這向我暗示有多個線程在工作。我對嗎?如果是這樣,一個簡單的鎖將是使其工作的最佳方式?

回答

1

如果您指示它異步執行,NSURLConnection將在另一個線程中執行。

在我看來,處理這個問題的最好方法是編寫自己的委託協議,並在下載並解析數據時使用委託來返回地圖。

您可以使用NSURLConnection同步檢索您的數據,但您可能會強制用戶等待較長時間,特別是在發生連接超時時。我會避免這種做法。

相關問題