【问题标题】:app crashes after restart重启后应用崩溃
【发布时间】:2012-09-19 23:51:49
【问题描述】:

我是 iphone 开发的新手,为了感受一下,我创建了一个新视图,每次加载时都会弹出一个警报。

这可以正常工作,但是当我关闭应用程序然后重新打开它时,整个应用程序崩溃。我唯一要做的就是显示警报。

这是我的警报代码:

    UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle: @"Announcement"
                      message: @"This is really annoying just to make"
                      delegate: nil
                      cancelButtonTitle:@"OK"
                      otherButtonTitles:nil];
[alert show];

我想我应该输入 [alert release];,但 Xcode 一直说 release 不可用。

[alert release] 是我的应用在退出/重启时不断崩溃的原因吗?

谢谢!

编辑:这里是我调用 UIAlertView 的周围代码

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view.

//just testing alerts..this shows up after the first load only
UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle: @"Announcement"
                      message: @"This is really annoying just to make"
                      delegate: nil
                      cancelButtonTitle:@"OK"
                      otherButtonTitles:nil];
[alert show];

}

【问题讨论】:

  • ARC 不需要 release。如果您的项目刚刚开始(不超过几周),ARC 可能默认启用。崩溃肯定有其他原因。你在崩溃时遇到什么错误?另外,请尝试删除所有警报视图代码,看看是否是导致它的原因(我对此表示怀疑)。
  • 你在哪里调用[alert show] 方法?它可能(但我怀疑)是线程问题
  • 我在(void) viewDidLoad 方法中调用[alert show]。而且我没有收到错误;当我检查调试会话时,它说THREAD 1: SIGKILL 所以我有点困惑
  • 您需要显示新视图的代码 - 您发布的代码中没有任何内容会导致崩溃。

标签: objective-c ios


【解决方案1】:

如果您使用 ARC,release 将不可用

此外,正如@rdelmar 在 cmets 中所说,一个简单的警报导致崩溃是非常不寻常的,您确实需要提供有关您的问题的更多信息......您可以尝试的一件事是显示您的 @ 987654322@ 在 viewDidAppear 内,而不是 viewDidLoad 方法。

【讨论】:

    【解决方案2】:

    是的,您应该发布 [警报发布]。为了分析应用崩溃,您应该提供一些信息。

    【讨论】:

    • 这是不正确的,不会触发新项目的崩溃。如果情况变得更糟,那么在非 ARC 设置中省略发布将触发泄漏。即使 OP 使用的是古老的门挡(又名原始 iPhone),这种最小泄漏 (UIAlert) 也几乎不会触发内存不足。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    相关资源
    最近更新 更多