2011-10-09 73 views
3

我打电话从两个线程的方法,我想我试试这个:是否允许循环方法调用?

- (void)hideEnterButton 
{ 
    if ([NSThread isMainThread]) 
    { 
     enterButton.hidden = YES; 
    } 
    else 
    { 
     [self performSelectorOnMainThread:@selector(hideEnterButton) withObject:nil waitUntilDone:NO]; 
    } 
} 

之所以这样,是,我明白,所有的GUI操作必须在主线程上完成。 这工作?

回答

6

适当的期限是recursive,不是圆的,是的,这是完全没有做到这一点。

0

是的。这是一种常见的模式。

3

是的,这是完全有效的。我以前使用过这种确切的方法,它工作得很好。唯一的问题是,使用它的任何代码都不能假定按钮在返回后隐藏,因为它不会等待调用完成。如果这不会成为问题,请按原样使用它。如果可以,只需通过YES代替waitUntilDone: