Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
我的iPhone应用程序在后台打开并选择Tab atIndex:0后崩溃_Iphone_Uiviewcontroller_Uitabbarcontroller_Uitabbaritem_Backgrounding - Fatal编程技术网

我的iPhone应用程序在后台打开并选择Tab atIndex:0后崩溃

我的iPhone应用程序在后台打开并选择Tab atIndex:0后崩溃,iphone,uiviewcontroller,uitabbarcontroller,uitabbaritem,backgrounding,Iphone,Uiviewcontroller,Uitabbarcontroller,Uitabbaritem,Backgrounding,我真的搞不懂。当我在我的应用程序中单击链接打开Safari,浏览网页,然后返回到我的应用程序时,我可以在我的UITabBar中打开并浏览两个tabBarItems。但是,当我尝试选择一个atIndex:0时,我会得到一个EXEC\u BAD\u访问权限以及以下内容:(.有人能帮我找出如何避免这种情况发生吗?我目前没有在will或dienterbackground或前台执行的代码。没有。所以问题一定是在第一个选项卡的UIViewController中。(哦,我也不知道为什么要添加子视图。相关的?)

我真的搞不懂。当我在我的应用程序中单击链接打开Safari,浏览网页,然后返回到我的应用程序时,我可以在我的
UITabBar
中打开并浏览两个
tabBarItems
。但是,当我尝试选择一个
atIndex:0
时,我会得到一个
EXEC\u BAD\u访问权限以及以下内容:(.有人能帮我找出如何避免这种情况发生吗?我目前没有在
will
dienterbackground
前台执行的代码。没有。所以问题一定是在第一个选项卡的
UIViewController
中。(哦,我也不知道为什么要添加子视图。相关的?)有什么想法

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
        0   libobjc.A.dylib                 0x0109ba63 objc_msgSend + 23
        1   UIKit                           0x0031f3df -[UIView(Internal) _didMoveFromWindow:toWindow:] + 966
        2   UIKit                           0x0031f1b0 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 407
        3   UIKit                           0x0031f1b0 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 407
        4   UIKit                           0x0031f1b0 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 407
        5   UIKit                           0x0031f1b0 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 407
        6   UIKit                           0x0031f1b0 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 407
        7   UIKit                           0x0031dfc4 -[UIView(Hierarchy) _postMovedFromSuperview:] + 166
        8   UIKit                           0x00316dfc -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1080
        9   UIKit                           0x0031514f -[UIView(Hierarchy) addSubview:] + 57
        10  UIKit                           0x003725ac -[UITransitionView transition:fromView:toView:] + 563
        11  UIKit                           0x00371955 -[UITransitionView transition:toView:] + 129
        12  UIKit                           0x003a6383 -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:] + 459
        13  UIKit                           0x003a4d86 -[UITabBarController transitionFromViewController:toViewController:] + 64
        14  UIKit                           0x003a6b7e -[UITabBarController _setSelectedViewController:] + 263
        15  UIKit                           0x003a69ed -[UITabBarController _tabBarItemClicked:] + 352`

坏访问意味着您可能正在访问指向已释放内存的内容。在您描述的情况下,您的视图很可能是由于内存不足警告而卸载的,尤其是那些不可见的警告。如果您没有准备好卸载,当视图重新加载时,坏事情通常会发生。确保您在视图控制器中正确处理viewDidUnload方法和交互viewDidLoad。

当应用程序从bg返回时,它是否在崩溃的视图控制器中调用viewDidLoad?是的。三个选项卡中的两个都可以。但我认为@rcw3是正确的。这肯定是内存问题(我加载了一个1030 x 450像素的图像,我还没有接触到它的内存)。处理它的最佳方法是什么?我应该在图像再次加载后重新加载它吗?还是每次加载ViewDidLoad?我都在努力解决这个问题,因为这是导致此错误访问的原因。谢谢。包含这两种方法的代码会有所帮助。我们可以将问题缩小到更窄。完美。这一定是问题所在。请参阅我上面的评论。您有什么建议吗有什么办法可以修复它吗?非常感谢。我已经解决了。我所要做的就是使用应用程序委托重置原始上下文并取消viewcontroller。