2011-05-21 150 views
1

我有一個用於移動購物的應用程序。我有一個「LocationModel」singleton對象,它從pList獲取地址列表並將每個地址轉換爲「Location」對象。在位置對象中,我有一個「緯度」和「經度」變量。目前我有一個遍歷位置對象數組的方法,並用每個位置對象內的地址ping google.api服務器,然後使用NSXML解析器分析返回的數據類型,並提取並分配給每個位置對象的座標。如何在iPhone應用程序的主線程中啓動新線程

現在,所有這些都在主線程完成,因此當應用程序啓動好幾秒鐘後,GUI被鎖定。我想在appdelegate的主要方法中開始一個新的線程,它可以在後臺獲取座標。但之前我從來沒有做過多線程,而且我看了Apple的併發編程指南和線程指南,看起來非常令人難以置信。有人可以請我指出一些易於理解和具有示例代碼的資源。

非常感謝

回答

1

你可以看看this method。這在每個NSObject子類中都可用。這將在後臺產生一個新線程並運行該方法。您可以將所有與下載和處理相關的代碼放入方法中。需要記住的一點很重要,您不能從主線程以外的任何線程更新UI。因此,一旦準備好更新UI​​,您應該使用performSelectorOnMainThread:withObject:waitUntilDone:來調用將更新UI的方法。

雖然這應該足夠了,但我建議您看看GCD。

+0

非常感謝。我其實不需要更新用戶界面。後臺線程只是獲取位置模型的信息。信息完成後,翻轉BOOL,然後位置模型知道所有座標都已到位。當用戶購物時,這個過程發生在後臺,並且如果用戶轉到位置顯示頁面並且BOOL未翻轉,則顯示微調器... 聽起來如何? – banditKing 2011-05-21 00:39:54

+0

這取決於上下文,但應該是可以接受的。 – 2011-05-21 01:10:23