菜鸟教程小白 发表于 2022-12-12 14:55:17

ios - 关闭 UIViewController 时 EXC_BAD_ACCESS 崩溃


                                            <p><p>我有两个按钮触发 segues 到两个不同的 UIViewCONtrollers,使用以下代码:</p>

<pre><code>- (IBAction)newTransButton:(UIButton *)sender
{
    ;
}

- (IBAction)switchAccountButton:(UIButton *)sender
{
    ;
}


-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSManagedObjectContext *localContext = ;

    if ([ isEqualToString:@&#34;newTransSegue&#34;])
    {
      UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
      AddTransactionVC *atvc = (AddTransactionVC *)navController.topViewController;
      atvc.delegate = self;

      WMMGTransaction *addedTransaction = (WMMGTransaction *);

      addedTransaction.account = self.currentAccount.name;
      atvc.thisTransaction = addedTransaction;
    }

    else if ([ isEqualToString:@&#34;selectAccountSegue&#34;])
    {
      UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
      AccountSelectVC *acctSelVC = (AccountSelectVC *)navController.topViewController;
      acctSelVC.delegate = self;
    }
}
</code></pre>

<p>任一按钮的激活都会转到相应的 ViewController ,但会导致此警告:</p>

<pre><code>Warning: Attempt to present &lt;UINavigationController: 0x7fb99b4dd430&gt; on &lt;FirstViewController: 0x7fb99b565dd0&gt; whose view is not in the window hierarchy!
</code></pre>

<p>每个 ViewController 上都有一个保存和取消导航栏按钮。除了上面提到的之外,一切都按预期工作,除了 <code>newTransSegue</code> 上的 ViewController 上的 Cancel 按钮,它关闭了 VC,但应用程序因以下错误而崩溃:</p>

<p><code>EXC_BAD_ACCESS(代码 = 1,地址 = 0x7f87394af29)</code></p>

<p>这是我用来关闭该 VC 的委托(delegate)方法:</p>

<pre><code>-(void)addTransactionViewControllerDidCancel
{
    ;
}
</code></pre>

<p>我已经为此工作了几天,并尝试删除 segues 并在 Storyboard 中重新创建它们,以及对导航 Controller 执行相同的操作。我在某个地方偏离了轨道,但看不到确切的位置。 </p>

<p>我当然可以使用一些指导。 :)</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>好的,我研究了@Jay 提供的引用资料。原来我以前见过它,但只是第 1 部分。在第 2 部分中,我发现了对 Enable Zombie Objects 的引用,我做到了。现在,当应用程序崩溃时,我收到了这条消息:,它指出了 Storyboard中的一个问题。</p>

<p>在检查 Storyboard 时,我惊讶地发现,所讨论的 ViewController 的表示形式与周围的 ViewController 不同。我希望我做了一个截图,但在狩猎的热潮中,我没有。 </p>

<p>无论如何,进一步的研究出现了<a href="https://stackoverflow.com/questions/27681488/uilayoutguide-isdescendantofview-message-sent-to-deallocated-instance-0x174" rel="noreferrer noopener nofollow">this question (and its associated comments)</a> .我的调查显示,虽然我启用了 Size Classes,但由于某种我无法解释的原因,Simulated Metrics 下的相关 View Controller 的大小已设置为“Freeform”。我将它重置为“推断”,现在一切似乎运行正常——没有崩溃。希望我能详细解释一下,但我对结果很满意!</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 关闭 UIViewController 时 EXC_BAD_ACCESS 崩溃,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/29334284/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/29334284/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 关闭 UIViewController 时 EXC_BAD_ACCESS 崩溃