performSelector:withObject:afterDelay阻塞ui线程

时间:2014-05-16 18:26:32

标签: ios selector

我想在ui线程上执行操作(设置按钮启用状态)

然而,如果我想执行它“延迟后”它似乎阻止了ui线程

-(void)changeButtonState:(UIButton *)btn{
   [btn setEnabled:NO];

   [self performSelector:@selector(reenableButton:) withObject:btn afterDelay:5];

}

-(void)reenableButton:(UIButton*)btn{
    [btn setEnabled:YES];
}

如何在延迟后执行选择器,而不阻塞主线程,我需要做的操作必须在ui线程上完成?

1 个答案:

答案 0 :(得分:0)

听起来你的插座错了。也许你已经为底层视图而不是按钮创建了一个出口。

如果是这种情况,那么您应该收到类似这样的警告:Incompatible pointer types sending 'UIView *' to parameter of type 'UIButton *'

这可以解释为什么一切都被禁用,而不仅仅是按钮。