2011-02-03 26 views
2

我想執行一個選擇器,它在後臺線程中返回一個NSString,並且返回的NSString將取決於輸入對象albumlink。在後臺執行選擇器並獲取返回字符串

我在後臺執行它,因爲它需要一段時間來縮短網址。

我真的很感激,如果你能告訴我如何得到返回字符串。

我的代碼來執行該選擇是:

[self performSelectorInBackground:@selector(shortenURL:) withObject:albumlink]; 

回答

8

你不能讓它在運行的線程之外函數的返回值在後臺線程做一些事情的全部意義在於它採取。超出了主線程的正常流程,所以沒有地方讓它返回..最明智的方法是創建一個在後臺執行的塊(通過NSOperation或GCD直接)更新或更新值主線程 - 如果之後需要存儲該值 - 或者只是將要在值的一個分支中使用的值執行任何值。

+1

你可以 - 有後臺線程主線程上執行選擇以字符串作爲參數。 – Richard 2011-02-03 21:25:47

12

你可以在你的類寫的另一種方法(我們稱之爲-handleResponse:(NSString *)response),然後從背景程序,你可以撥打:

[self performSelectorOnMainThread:@selector(handleResponse:) withObject:@"My response string" waitUntilDone:NO]; 
相關問題