我编写了一个小的 Objective-C 程序来归档一个对象。该对象是一个 NSDictionary。编译时没有问题。但是当它被调用时,它会在终端中显示一条消息“分段错误”,并且没有创建存档 XML 文件。问题是由 writeToFile 方法引起的,因为在我将其注释掉之后没有错误(当然也没有存档)。这个错误信息是什么意思?以及如何解决?
我刚刚发现了问题的原因。我的程序基于书中的示例,并且存在打印错误,因此字典对象从未真正初始化。抱歉,在询问之前我没有彻底检查这个问题。
我编写了一个小的 Objective-C 程序来归档一个对象。该对象是一个 NSDictionary。编译时没有问题。但是当它被调用时,它会在终端中显示一条消息“分段错误”,并且没有创建存档 XML 文件。问题是由 writeToFile 方法引起的,因为在我将其注释掉之后没有错误(当然也没有存档)。这个错误信息是什么意思?以及如何解决?
我刚刚发现了问题的原因。我的程序基于书中的示例,并且存在打印错误,因此字典对象从未真正初始化。抱歉,在询问之前我没有彻底检查这个问题。
分段错误是由尝试取消引用坏指针引起的。您传递给的文件实例可能writeToFile:
为零。您需要检查您的返回码是否成功,并检查您的指针是否都有效。
鉴于注释掉该行时它不会崩溃,您只需要确保该调用的所有参数都有效并且您会发现您的错误。
更多阅读:
分段错误通常意味着您的程序正在访问它不应该访问的内存。在调试器中运行你的程序,它应该会告诉你错误发生在哪里。
没有任何示例代码很难确定确切的问题,但是当 CPU 试图访问它不拥有的内存时会发生分段错误。这通常意味着您有一个未初始化的指针,或者没有指向正确的位置,然后您尝试取消引用它导致崩溃。我建议梳理你的代码,并确保你所有的指针都在做你期望他们做的事情。