Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何组合来自多个线程的视图转换?_Objective C_Multithreading - Fatal编程技术网

Objective c 如何组合来自多个线程的视图转换?

Objective c 如何组合来自多个线程的视图转换?,objective-c,multithreading,Objective C,Multithreading,我有一个带有两个线程的Obj-C iPhone应用程序。当然,第一个线程包含GUI。第二个线程做了大量的工作,并且在某个时候在主线程上运行一个方法,该方法显示一个模态UIViewController。我希望此UIVC显示为动画,但此时GUI可能处于禁用UIVC的状态(因为用户可能只是在应用程序中导航),在这种情况下,我会得到一个 Uncaught exception: Attempting to begin a modal transition from <UINavigationCont

我有一个带有两个线程的Obj-C iPhone应用程序。当然,第一个线程包含GUI。第二个线程做了大量的工作,并且在某个时候在主线程上运行一个方法,该方法显示一个模态UIViewController。我希望此UIVC显示为动画,但此时GUI可能处于禁用UIVC的状态(因为用户可能只是在应用程序中导航),在这种情况下,我会得到一个

Uncaught exception: Attempting to begin a modal transition from <UINavigationController: 0x180dbb20> to <UINavigationController: 0x17f3c810> while a transition is already in progress. Wait for viewDidAppear/viewDidDisappear to know the current transition has completed
Uncaught异常:正在进行转换时,试图从开始模式转换到。等待ViewDidDisplay/ViewDidEnglish以了解当前转换已完成

处理这个问题的正确方法是什么?

动画都在主线程上运行

您可以尝试延迟当前动画或将推送动画设置为
NO


我不想在没有动画的情况下展示新的VC,因为尽管用户希望它在某个时刻出现,但它确实会干扰他对应用程序的使用,所以它应该看起来很优雅。你的解决方案很有效,谢谢。
-viewDidAppear {
    double delayInSeconds = 0.1;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        [self present];
    });