如何将字符串传递给处理主线程操作函数

时间:2011-11-18 05:15:17

标签: iphone ios

您好我想在我的代码中将字符串传递给updateProgressBar函数以显示一些数据。所以我怎么做呢

[self performSelectorOnMainThread:@selector(updateProgressBar) withObject:nil waitUntilDone:NO];

我的功能看起来像这样

-(void)updateProgressBar
{
    lbl.text = ?    
}

2 个答案:

答案 0 :(得分:0)

在updateProgressBar上传递参数有不同的方法。

你可以这样做

    NSString * alpha;

   //assign some value to alpha

    [self performSelectorOnMainThread:@selector(updateProgressBar:) withObject:alpha waitUntilDone:NO];

    -(void)updateProgressBar:(NSString *)beta
     {
          lbl.text = beta;    
     }

或者你也可以使用performSelectorOnMainThread传递多个参数。 你可以在google上搜索很多有关此内容的教程。

答案 1 :(得分:0)

您可以使用GCD来避免编写单独的方法:

dispatch_async(dispatch_get_main_queue(), ^{
    lbl.text = newLabel;
});

要解决此答案评论中所述的问题(__NSAutoreleaseNoPool(): Object 0x55f3ec0 of class NSCFString autoreleased with no pool in place):

您最有可能在没有自动释放池的后台线程中执行此代码段。您可以create one或避免使用autorelease