设置UILocalNotification然后关闭应用程序时,iOS模拟器崩溃

时间:2013-07-15 12:06:21

标签: ios ios-simulator uilocalnotification

我正在设置UILocalNotification以通知用户有关某个事件。

我的问题是,在设置通知并关闭应用程序后,模拟器崩溃并显示消息“线程1:信号SIGKILL ”。

我知道this回答,但我没有在userinfo词典中存储任何内容。

以下是代码:

NSDate *alertTime = [[NSDate date]
                     dateByAddingTimeInterval:10];
UIApplication* app = [UIApplication sharedApplication];
UILocalNotification* notifyAlarm = [[UILocalNotification alloc] init];

if (notifyAlarm)
{
    notifyAlarm.fireDate = alertTime;
    notifyAlarm.timeZone = [NSTimeZone defaultTimeZone];
    notifyAlarm.repeatInterval = 0;
    notifyAlarm.alertBody = @"Testing notification.";
    [app scheduleLocalNotification:notifyAlarm];
    NSLog(@"Notification set");
}

你知道为什么会发生这种情况吗?

由于

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,经过一些实验了解到能够解决它的问题。

首先,请注意您可以通过以下步骤随意触发此崩溃/挂起:

  1. 从Xcode 启动您的应用(在设备或模拟器上)。
  2. 可选择触发通知,然后按“主页”按钮以最小化您的应用,然后双击主页按钮并从显示的底座中完全关闭您的应用。
  3. 无需拔出设备,关闭模拟器或关闭Xcode,直接从设备或模拟器重新启动应用,方法是点击通知推送应用或只需点按应用的图标主屏幕。
  4. 现在,如果您使用的是模拟器,应用程序将立即崩溃,如果您使用的是真实设备,即使按下“主页”按钮,整个设备也会挂起并无响应,直到您拔下它或按下在Xcode中再次运行按钮。

    这个问题似乎在Xcode 4.6.3和Xcode 5.0中都有所体现;我还没试过其他版本。

    毋庸置疑,如果您尝试测试涉及从通知中完全重新启动应用程序的用户交互路径,这个错误真的很糟糕,就像问题提供者一样(而不是简单地测试通知将您的应用带入的情况)来自背景的前景)。幸运的是,这个bug很容易解决。

    如果您使用的是设备,则解决方法就是:从Mac上拔下设备。如果在您尝试启动应用程序时将设备插入Xcode,则上述错误仅会自行显示。

    如果你只能访问模拟器,那就有点棘手,但只是轻微一点。首先,使用说明here使您能够从Xcode外部启动模拟器:

    1. 在Finder中,浏览到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/
    2. iOS Simulator应用从该文件夹拖到您的停靠栏。
    3. 现在,您可以随时从Dock中将模拟器作为独立应用程序启动。
    4. 现在测试使用本地通知完全重新启动应用的应用:

      1. 从Xcode在模拟器上启动您的应用程序。
      2. 触发您的本地通知。
      3. 使用主页按钮退出您的应用。
      4. 双击主页按钮,然后从模拟器底座关闭应用程序。
      5. 使用命令关闭模拟器 + q
      6. 从Mac的底座重新启动模拟器。
      7. 等待您的通知。
      8. 点按通知以重新启动应用。
      9. 观察它不会立即崩溃!耶!
      10. 这是必要的,但至少应用这种解决方法并不需要很长时间。