当前位置: 首页 > 面试题库 >

Swift:本机检测应用是否崩溃

郭星文
2023-03-14
问题内容

我已经四处搜寻,但是还没有找到一个答案,该答案并未将我引向第3方服务。我不需要任何复杂的东西,只是为了保存一个值,NSUserDefaults所以当该应用程序下次打开时,我可以显示一条警报,指出该应用程序已崩溃。

谢谢。


问题答案:

感谢@RyanCollins的一点帮助,我能够自己解决问题。“
applicationWillTerminate应用程序委托”中的功能仅在应用程序正常关闭时运行。用于本地检测应用程序崩溃的代码如下所示。

全局定义的变量

let crashedNotificationKey = "com.stackoverflow.crashNotificationKey"
var crashedLastTime = true

应用程序委托

func applicationWillTerminate(application: UIApplication) {
    crashedLastTime = false
    prefs.setBool(crashedLastTime, forKey: "crash")
}

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    crashedLastTime = prefs.boolForKey("crash")
    if crashedLastTime == true {

        crashedLastTime = false
        prefs.setBool(crashedLastTime, forKey: "crash")
        NSNotificationCenter.defaultCenter().postNotificationName(crashedNotificationKey, object: self)

    } else {

        crashedLastTime = true
        prefs.setBool(crashedLastTime, forKey: "crash")

    }

    return true
}

根视图控制器

override func awakeFromNib() {
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "crashedAlert", name: crashedNotificationKey, object: nil)
}

func crashedAlert() {
    let alert = UIAlertController(title: "The app has crashed!", message: "Sorry about that! I am just a 17 year old highschooler making my first game!", preferredStyle: UIAlertControllerStyle.Alert)
    alert.addAction(UIAlertAction(title: "It's cool bro.", style: UIAlertActionStyle.Default, handler: nil))
    self.presentViewController(alert, animated: true, completion: nil)
}


 类似资料:
  • 问题内容: 我想以编程方式确定是否直接从XCode(在模拟器中或在系留设备上)运行iOS应用。我尝试了此处描述的-DDEBUG解决方案,但是当我断开与Xcode的连接并重新运行该应用程序时,它仍然认为它处于调试模式。我认为我正在寻找的是此功能的Swift版本 问题答案: 说明: 您的C代码(以及下面的Swift版本)检查程序是否在 调试器的控制 下运行 , 而不是是否从Xcode运行。一个人可以在

  • 问题内容: 我知道那里有大量的堆栈溢出页面来解释如何执行此操作,但是每次我从此处获取代码并将其放入时,我都会遇到相同的错误,并且该错误是“字符串”的值?没有成员“文本”的任何可靠方法都可以用于检查文本字段是否快速为空? 问题答案: 这个帖子给出了一个很好的答案(很遗憾,它没有“接受”的标记)。使用。 假设您的声明为: 您可以使用以下方法检查其空度: 要在您编辑的帖子中使用变量: 要么:

  • 有没有一种简单的方法可以检测JAI的原生二进制文件是否已安装? JAI(Java高级成像)可以在多种模式下运行,既有本地二进制文件也有本地二进制文件,这使得它处理图像的速度更快,还增加了对其他格式的支持。但是,由于本地库不能用Maven安装,您如何检测它们是否安装在系统中?

  • 我不明白这是什么意思,也不明白为什么只有有时候才会发生。如有任何帮助,我们将不胜感激。很乐意分享更多细节。 我们已经能够在Android7.0设备上重现这次崩溃。但并不一致。

  • 问题内容: 我正在尝试检查是否存在用户默认值,如下所示: 但是,无论对象还不存在,它将始终返回true是什么?这是检查存在的正确方法吗? 问题答案: 阿斯通有一个很好的答案。请参阅下面的Swift 3版本。

  • 我们正在调查另一个团队开发的一个应用程序,该应用程序在Android上与HereMaps(此处为SDK导航版,)相关的本机崩溃,其stacktrace如下: 编辑: 在代码中进行了一些重构和清理操作之后,我们已经达到了一个干净的状态,在这个状态下,我们确信没有任何泄漏;我们已经用LeakCanary调查并移除了所有这些,但本地崩溃仍然存在。 因此,我们试图回到basis,从github克隆了HER