我正在尝试执行一个在后台线程中返回NSString的选择器,并且返回的NSString将取决于输入对象albumlink。
我在后台执行此操作,因为缩短网址需要一段时间。
如果你能告诉我如何获得返回字符串,我真的很感激。
执行该选择器的代码是:
[self performSelectorInBackground:@selector(shortenURL:) withObject:albumlink];
答案 0 :(得分:12)
您可以在班级中编写另一种方法(让我们称之为-handleResponse:(NSString *)response
),然后从后台程序中调用:
[self performSelectorOnMainThread:@selector(handleResponse:) withObject:@"My response string" waitUntilDone:NO];
答案 1 :(得分:8)
你不能在它运行的线程之外获得函数的返回值。在后台线程中做某事的重点是它从主线程的正常流程中取出,所以没有它的位置返回..最明智的方法是创建一个在后台执行的块(通过NSOperation或GCD直接执行),更新或更新主线程上的值 - 如果您需要在以后存储值 - 或者只是如果只是在代码的一个分支中使用它,那么你将对该值做什么。