【问题标题】:iOS Simulator crashing in compileiOS模拟器在编译时崩溃
【发布时间】:2015-03-26 07:16:23
【问题描述】:

我是 xcode 和这个论坛的新手,很抱歉我的语言不专业。

我在尝试运行应用程序时遇到了 iOS 模拟器崩溃的问题。这并不总是发生,当我刚刚开始从事一个项目时,一切都很好。但是突然之间,在我只是更改了代码中的一些小东西之后,iOS模拟器一开始就崩溃了(编译工作)。然后 Xcode 将我带到调试页面,并且还在右下角窗口中显示了很多输出(我不知道它叫什么)。我没有得到任何输出,它说明了 NSencryption。一旦 iOS 模拟器开始崩溃,它就会在每次开始运行该项目/应用程序时崩溃。即使我撤消了我在停止工作时所做的更改,即使我删除了所有代码并且一切看起来都像一个新项目,它也不会运行。

试图打电话给 Apple 支持来解决这个问题,但他们说我应该在论坛上发布一个问题,希望你能帮助我,因为我真的厌倦了,我无法构建任何东西。

顺便说一句,我尝试重置 iOS 模拟器,但同样的问题继续出现。

这是我从“控制台”得到的输出:顺便说​​一句,请告诉我这段代码是否合理,我将删除它。

2015-03-26 17:39:52.727 Testing123[19815:4331412] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<Testing123.ViewController 0x7f93ea8272c0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key addFive.' *** First throw call stack: ( 0 CoreFoundation 0x00000001026e1a75 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x0000000104239bb7 objc_exception_throw + 45 2 CoreFoundation 0x00000001026e16b9 -[NSException raise] + 9 3 Foundation 0x0000000102afcd43 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 259 4 CoreFoundation 0x000000010262b5e0 -[NSArray makeObjectsPerformSelector:] + 224 5 UIKit 0x000000010323b4ed -[UINib instantiateWithOwner:options:] + 1506 6 UIKit 0x0000000103099a88 -[UIViewController _loadViewFromNibNamed:bundle:] + 242 7 UIKit 0x000000010309a078 -[UIViewController loadView] + 109 8 UIKit 0x000000010309a2e9 -[UIViewController loadViewIfRequired] + 75 9 UIKit 0x000000010309a77e -[UIViewController view] + 27 10 UIKit 0x0000000102fb9509 -[UIWindow addRootViewControllerViewIfPossible] + 58 11 UIKit 0x0000000102fb98a1 -[UIWindow _setHidden:forced:] + 247 12 UIKit 0x0000000102fc5f8c -[UIWindow makeKeyAndVisible] + 42 13 UIKit 0x0000000102f700c2 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 2732 14 UIKit 0x0000000102f72e3e -[UIApplication _runWithMainScene:transitionContext:completion:] + 1349 15 UIKit 0x0000000102f71d35 -[UIApplication workspaceDidEndTransaction:] + 179 16 FrontBoardServices 0x0000000105deb243 __31-[FBSSerialQueue performAsync:]_block_invoke + 16 17 CoreFoundation 0x0000000102616c7c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12 18 CoreFoundation 0x000000010260c9c5 __CFRunLoopDoBlocks + 341 19 CoreFoundation 0x000000010260c785 __CFRunLoopRun + 2389 20 CoreFoundation 0x000000010260bbc6 CFRunLoopRunSpecific + 470 21 UIKit 0x0000000102f717a2 -[UIApplication _run] + 413 22 UIKit 0x0000000102f74580 UIApplicationMain + 1282 23 Testing123 0x00000001025051ee top_level_code + 78 24 Testing123 0x000000010250522a main + 42 25 libdyld.dylib 0x0000000104a15145 start + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb)

这是给我这个错误的代码:

` 导入 UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}`

这里是project

【问题讨论】:

  • 欢迎来到 SO。如果您想获得有用的回复,您应该发布一些相关数据,在您的情况下,这将是来自控制台(右下角)的崩溃描述和似乎导致问题的代码。
  • 正如@JakubVano 所说,请发布您的堆栈跟踪...否则我们将无法帮助您解决问题:)
  • 听起来您的应用程序正在崩溃(不是 iOS 模拟器)。右下角的那个窗口是调试器 (lldb) 窗口。请发布有关崩溃的更多详细信息(例如:崩溃点附近的代码、崩溃的回溯等)以获得更多有用的响应。
  • 您在更改的代码中出错,程序(应用程序)现在崩溃,这种情况并不少见。创建一个崩溃的应用程序只需要一个小改动。检查发生了什么变化,并试图弄清楚是什么。在您更改为问题的区域中添加代码,以及在调试器窗口(右下窗格)中添加消息。 Apple 无法帮助您找到编程中的错误,这取决于您,但这里是寻求帮助的好地方。
  • 感谢您的快速回复!只是想和你们核实一下控制台中的错误是否包含我不希望有人在我上传错误之前掌握的任何敏感信息?

标签: ios xcode swift compilation


【解决方案1】:

你没有提供很多细节,但这里是如何开始解决你的问题。

Xcode 应用的底部有一个调试器窗口。在该窗口中,将显示来自应用程序的消息。当您的应用崩溃时,它会打印出一个堆栈跟踪,显示崩溃前发生的事情。

在此处发帖时,您需要将其包含在您的帖子中。在该崩溃日志中,顶部将告诉您问题所在——典型问题是 nil 值或调用超出范围的内容。在崩溃日志中往下看,您通常会看到系统内容(UIKit 等)。查看您创建的类中最近调用的方法。然后,在您的代码中找到该方法并在其旁边添加一个断点。当断点到达该点时,它将停止执行您的代码。在屏幕底部的调试器窗口顶部,您会看到一些按钮。其中之一是“跨过”。当您遇到断点时,使用“跳过”按钮一次执行您的代码一行。当你遇到问题时,它会崩溃。

您还需要通过 Google 搜索调试控制台吐出的错误。十分之九,有人遇到了您遇到的问题,您将能够继续解决您的问题。如果这不能解决问题,您需要在此处发布详细信息和有问题的方法。

我建议做的另一件事是学习如何使用 GitHub。当我开始学习这个(我还在学习它)时,git 似乎有点矫枉过正,但事后看来,从一开始就学习如何使用 git 会是一个好主意。您将能够创建分支来处理软件中的功能,并在新功能正常工作时将它们合并为“主”。当我开始的时候,我会走得很远,我会做一个小的改变,我会破坏一堆东西——这仍然会发生在 Git 上,但你会有一个可以运行的软件版本。使用 Git,您将能够始终拥有一个可以运行的稳定版本,并且您可以添加功能而不必担心破坏整个项目。

祝你好运!

更新新信息:

您的出发点是谷歌搜索:Terminating app due to uncaught exception 'NSUnknownKeyException', reason: ViewController setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key

另外,import UIKit 应该是 #import UIKit。我怀疑这篇文章会引导你朝着正确的方向前进。

What does this mean? "'NSUnknownKeyException', reason: … this class is not key value coding-compliant for the key X"

解决方案:

你有一个ViewController.swift 文件,但你的故事板文件是

1) 名称错误和 2) 没有任何场景。

这是你需要做的:

1) 重命名故事板文件“Main.storyboard” 2) 在故事板上添加视图控制器场景,因为您的故事板上目前没有场景。您可以通过从屏幕右下角拖放视图控制器来完成此操作。 3) 当您的 ViewController 场景突出显示时,在屏幕的右上角,您应该会看到一些按钮。其中之一称为“属性检查器”。确保选中“是初始视图控制器”。左侧的一个按钮是“身份检查器”。确保类设置为ViewController

我再说一遍。如果你想学习 iOS,我建议先学习 GitHub。此外,Stanford University has a free iOS course 由一位与史蒂夫乔布斯密切合作的人教授,您可能会发现这很有帮助。如果刚开始“太多”,我建议拿起一本 Big Nerd Ranch 书或查看 Ray Wenderlich 的网站。

【讨论】:

  • 不要忽视在源代码控制菜单中使用 Xcode 中的 Git,它很简单而且效果很好。然后你可以推送到 GitHub 或 BitBucket。
  • 感谢您的快速回复!只是想与你们核实一下控制台中的错误是否包含任何我不希望有人在我上传错误之前掌握的敏感信息?
  • 可能不会。根据日志中出现的内容,它可能在某处引用了您的用户名。在发布之前,您可能需要查看一下。
  • 是的,错误信息一般是有用的,添加到你的问题中。没有任何代码,也没有错误信息,就无法提供帮助。
  • 我刚刚添加了错误信息,希望对您有所帮助。只要告诉我你是否需要别的东西!非常感谢!
【解决方案2】:

错误消息的相关部分是: "[Testing123.ViewController 0x7f93ea8272c0> setValue:forUndefinedKey:]:这个类对于addFive的键不符合键值编码。'

查找您在哪里使用addFive。这不是为您使用它的实例定义的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2021-08-27
    • 2011-12-09
    • 2013-09-27
    • 1970-01-01
    相关资源
    最近更新 更多