在后台执行选择器并获取返回字符串

时间:2011-02-03 19:43:06

标签: iphone objective-c xcode ios4 nsstring

我正在尝试执行一个在后台线程中返回NSString的选择器,并且返回的NSString将取决于输入对象albumlink。

我在后台执行此操作,因为缩短网址需要一段时间。

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

执行该选择器的代码是:

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

2 个答案:

答案 0 :(得分:12)

您可以在班级中编写另一种方法(让我们称之为-handleResponse:(NSString *)response),然后从后台程序中调用:

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

答案 1 :(得分:8)

你不能在它运行的线程之外获得函数的返回值。在后台线程中做某事的重点是它从主线程的正常流程中取出,所以没有它的位置返回..最明智的方法是创建一个在后台执行的块(通过NSOperation或GCD直接执行),更新或更新主线程上的值 - 如果您需要在以后存储值 - 或者只是如果只是在代码的一个分支中使用它,那么你将对该值做什么。