【问题标题】:Perform Selector In Background and get the return string在后台执行选择器并获取返回字符串
【发布时间】:2011-02-03 19:43:06
【问题描述】:

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

我在后台执行它,因为缩短 URL 需要一段时间。

如果您能告诉我如何获取返回字符串,我将不胜感激。

我执行该选择器的代码是:

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

【问题讨论】:

    标签: iphone objective-c xcode ios4 nsstring


    【解决方案1】:

    您可以在您的类中编写另一个方法(我们称之为-handleResponse:(NSString *)response),然后您可以从后台进程中调用:

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

    【讨论】:

      【解决方案2】:

      你不能在它运行的线程之外获得函数的返回值。在后台线程中做某事的全部意义在于它脱离了主线程的正常流程,所以没有地方放它返回.. 最明智的方法是创建一个在后台执行的块(直接通过 NSOperation 或 GCD),它更新主线程上的值(如果您需要在之后存储值)或者只是如果该值仅用于一个代码分支,则执行您打算对它执行的任何操作。

      【讨论】:

      • 您可以 -- 让后台线程在主线程上执行选择器,并将字符串作为参数。
      • @Richard:你读过我的回答“你不能”吗?这基本上就是我说要做的。我说你不能做的是让一个方法在不同的线程上执行,但仍然正常返回一个值。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 2021-08-07
      • 2014-12-05
      • 2023-03-09
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      相关资源
      最近更新 更多