Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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
iOS-从导航控制器推送时应用程序冻结_Ios_Objective C_Xcode - Fatal编程技术网

iOS-从导航控制器推送时应用程序冻结

iOS-从导航控制器推送时应用程序冻结,ios,objective-c,xcode,Ios,Objective C,Xcode,我遇到了这个奇怪的错误:有时候当我按下一个视图控制器(VC1->VC2)时,应用程序会被冻结(它不会崩溃,只是冻结)。没有阻塞的主线程。当我检查视图层次结构时,VC2实际上位于“UIParallaxDimmingView”下。此外,还会调用viewDidLoad,viewdidappease 我如何介绍VC2: VC *vc2 = [[VC alloc]initWithStyle:UITableViewStyleGrouped]; [self.navigationController pushV

我遇到了这个奇怪的错误:有时候当我按下一个视图控制器(VC1->VC2)时,应用程序会被冻结(它不会崩溃,只是冻结)。没有阻塞的主线程。当我检查视图层次结构时,VC2实际上位于“
UIParallaxDimmingView
”下。此外,还会调用
viewDidLoad
viewdidappease

我如何介绍VC2:

VC *vc2 = [[VC alloc]initWithStyle:UITableViewStyleGrouped];
[self.navigationController pushViewController:vc2 animated:YES];
因此,问题是VC2已加载,但未显示在屏幕上。这是视图层次结构的屏幕截图,突出显示的蓝色视图是
UIParallaxDimmingView
,它阻止了我的所有VC2内容,VC1实际上在VC2下

这是我的堆栈跟踪

0x10016b8dc <+0>:   sub    sp, sp, #0x40             ; =0x40 
0x10016b8e0 <+4>:   stp    x29, x30, [sp, #0x30]
0x10016b8e4 <+8>:   add    x29, sp, #0x30            ; =0x30 
0x10016b8e8 <+12>:  stur   wzr, [x29, #-0x4]
0x10016b8ec <+16>:  stur   w0, [x29, #-0x8]
0x10016b8f0 <+20>:  stur   x1, [x29, #-0x10]
0x10016b8f4 <+24>:  bl     0x1004105a4               ; symbol stub for: objc_autoreleasePoolPush
0x10016b8f8 <+28>:  adrp   x1, 1044
0x10016b8fc <+32>:  add    x1, x1, #0x888            ; =0x888 
0x10016b900 <+36>:  adrp   x30, 1057
0x10016b904 <+40>:  add    x30, x30, #0xd70          ; =0xd70 
0x10016b908 <+44>:  ldur   w8, [x29, #-0x8]
0x10016b90c <+48>:  ldur   x9, [x29, #-0x10]
0x10016b910 <+52>:  ldr    x30, [x30]
0x10016b914 <+56>:  ldr    x1, [x1]
0x10016b918 <+60>:  str    x0, [sp, #0x18]
0x10016b91c <+64>:  mov    x0, x30
0x10016b920 <+68>:  str    w8, [sp, #0x14]
0x10016b924 <+72>:  str    x9, [sp, #0x8]
0x10016b928 <+76>:  bl     0x1004106c4               ; symbol stub for: objc_msgSend
0x10016b92c <+80>:  bl     0x10040fc20               ; symbol stub for: NSStringFromClass
0x10016b930 <+84>:  mov    x29, x29
0x10016b934 <+88>:  bl     0x100410718               ; symbol stub for: objc_retainAutoreleasedReturnValue
0x10016b938 <+92>:  mov    x9, #0x0
0x10016b93c <+96>:  ldr    w8, [sp, #0x14]
0x10016b940 <+100>: str    x0, [sp]
0x10016b944 <+104>: mov    x0, x8
0x10016b948 <+108>: ldr    x1, [sp, #0x8]
0x10016b94c <+112>: mov    x2, x9
0x10016b950 <+116>: ldr    x3, [sp]
0x10016b954 <+120>: bl     0x10040fd28               ; symbol stub for: UIApplicationMain
0x10016b958 <+124>: stur   w0, [x29, #-0x4]
0x10016b95c <+128>: ldr    x1, [sp]
0x10016b960 <+132>: mov    x0, x1
0x10016b964 <+136>: bl     0x1004106e8               ; symbol stub for: objc_release
0x10016b968 <+140>: ldr    x0, [sp, #0x18]
0x10016b96c <+144>: bl     0x100410598               ; symbol stub for: objc_autoreleasePoolPop
0x10016b970 <+148>: ldur   w0, [x29, #-0x4]
0x10016b974 <+152>: ldp    x29, x30, [sp, #0x30]
0x10016b978 <+156>: add    sp, sp, #0x40             ; =0x40 
0x10016b97c <+160>: ret`
0x10016b8dc:子sp,sp,#0x40=0x40
0x10016b8e0:stp x29,x30[sp,#0x30]
0x10016b8e4:添加x29,sp,#0x30=0x30
0x10016b8e8:stur wzr[x29,#-0x4]
0x10016b8ec:stur w0,[x29,#-0x8]
0x10016b8f0:stur-x1[x29,#-0x10]
0x10016b8f4:bl 0x1004105a4;用于:objc_autoreleasePoolPush的符号存根
0x10016b8f8:adrp x1,1044
0x10016b8fc:添加x1,x1,#0x888=0x888
0x10016b900:adrp X301057
0x10016b904:添加x30、x30、#0xd70=0xd70
0x10016b908:ldur w8[x29,#-0x8]
0x10016b90c:ldur x9[x29,#-0x10]
0x10016b910:ldr x30[x30]
0x10016b914:ldr x1[x1]
0x10016b918:str x0[sp,#0x18]
0x10016b91c:mov x0,x30
0x10016b920:str w8[sp,#0x14]
0x10016b924:str x9[sp,#0x8]
0x10016b928:bl 0x1004106c4;用于:objc_msgSend的符号存根
0x10016b92c:bl 0x10040fc20;NSStringFromClass的符号存根
0x10016b930:mov x29,x29
0x10016b934:bl 0x100410718;用于以下对象的符号存根:objc_retainAutoreleasedReturnValue
0x10016b938:mov x9,#0x0
0x10016b93c:ldr w8[sp,#0x14]
0x10016b940:str x0[sp]
0x10016b944:mov x0,x8
0x10016b948:ldr x1[sp,#0x8]
0x10016b94c:mov x2,x9
0x10016b950:ldr x3[sp]
0x10016b954:bl 0x10040fd28;UIApplicationMain的符号存根
0x10016b958:stur w0[x29,#-0x4]
0x10016b95c:ldr x1[sp]
0x10016b960:mov x0,x1
0x10016b964:bl 0x1004106e8;用于:objc_发布的符号存根
0x10016b968:ldr x0[sp,#0x18]
0x10016b96c:bl 0x100410598;用于:objc_autoreleasePoolPop的符号存根
0x10016b970:ldur w0,[x29,#-0x4]
0x10016b974:ldp x29,x30[sp,#0x30]
0x10016b978:添加sp,sp,#0x40=0x40
0x10016b97c:ret`

我设法找到了解决办法


因此,即使当前可见视图控制器是导航堆栈上唯一的VC,my
InteractiveEPgpgestureRecognitor
也会启用。只需禁用该功能即可解决此错误。

SWIFT 3

func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {


    if (navigationController.viewControllers.count > 1)
    {
         self.navigationController?.interactivePopGestureRecognizer?.delegate = self
        navigationController.interactivePopGestureRecognizer?.isEnabled = true;
    }
    else
    {
         self.navigationController?.interactivePopGestureRecognizer?.delegate = nil
        navigationController.interactivePopGestureRecognizer?.isEnabled = false;
    }
}

如何加载VC2?代码片段?你检查过CPU了吗?@HashmatKhalil请看我更新的问题,按照正常方式,你可能不需要共享VC2的init方法,再加上
-viewDidLoad
-viewdire:
-viewdide:
。如果你没有做任何有趣或不寻常的事情,这听起来像是一个操作系统错误,但似乎不太可能。@Seamusampbell我没有做任何可能影响UI的事情,我认为这是一个iOS错误,因为有趣的是:当它冻结时,我按home按钮返回主屏幕,然后返回应用程序,VC2看起来很正常。所以肯定没有什么东西阻塞主线程。真奇怪。