Ios 放松阶段需要永远的放松

Ios 放松阶段需要永远的放松,ios,objective-c,uistoryboardsegue,Ios,Objective C,Uistoryboardsegue,这是我的情况 我有三个视图控制器,Root、push和Leaf Root是堆栈中最低的。“被推”是被一个推段推的。“叶子”是由一个模态序列放在堆栈上的 Root有以下例程: -(IBAction) specialSegue:(UIStoryboardSegue*)segue { // Do stuff. } -(void) viewWillAppear:(BOOL)animated { } 从“叶子”开始,我称之为“放松”阶段,它将触发“特别格”。这一切都有效 完全奇怪的是,在调用“vie

这是我的情况

我有三个视图控制器,Root、push和Leaf

Root是堆栈中最低的。“被推”是被一个推段推的。“叶子”是由一个模态序列放在堆栈上的

Root有以下例程:

-(IBAction) specialSegue:(UIStoryboardSegue*)segue {
 // Do stuff.
}

-(void) viewWillAppear:(BOOL)animated {
}
从“叶子”开始,我称之为“放松”阶段,它将触发“特别格”。这一切都有效

完全奇怪的是,在调用“viewwillbeen”之前,几秒钟就过去了。我盯着屏幕,等待它放松。我知道有人打电话给“specialSegue”,从我的日志中抄录。它会被立即调用。但实际的平仓可能要晚得多。有时候,如果我在一个甚至没有按钮的地方再次点击屏幕,那么视图就会展开,视图就会出现


我想就是这样。非常感谢您的帮助。

谢谢jrturton和Bruno。我无法解释,我向您保证,如果我设置了断点,调试器会说我正在从主线程调用“performsgue…”。但如果我这样结束通话:

    dispatch_async(dispatch_get_main_queue(), ^{
        [self performSegueWithIdentifier:[self.segues objectAtIndex:row] sender:nil];
    });

它工作得很好。看起来我是在这里的主线程中,所以不需要上面的代码。但它确实解决了我的问题。所以我要继续了。

你怎么称呼放松阶段?当您从非主线程调用UIKit方法时,UI执行中通常会出现奇数延迟。释放序列作为按钮按下的直接响应被调用。所以这个动作发生在主线程中。@jrturton抢先一步。检查你的线程/GDC代码,这类问题通常是由这个错误产生的。好吧,SpecialScheue中发生了什么?当您在等待转换发生时暂停应用程序时会发生什么情况?回溯是什么样子的?什么都不会发生。我正在设置NSString属性。它做得很好,并且序列处理结束了。然后我一直等待,直到“viewwillappease”调用被点击。