2012-06-21 74 views
0

我做了一个iphone应用程序,我已经在应用程序商店提交。该应用程序在App Store中已有大约一年的时间。它基本上有一个FaceBook Login按钮。一天它崩溃,当我点击我的Facebook登录按钮在我的iPhone 4,iPhone 4s。当我尝试运行它在我的Macbookpro它也崩溃了。我发现了错误 “终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因是: ' - [NSNull lowercaseString]:无法识别的选择发送到实例0x2125ce8'” .........Facebook登录后的应用程序崩溃

它可以在我的iPhone 3Gs中正常工作......请帮助我。iPhone应用程序如何崩溃大约工作了一年之后。这是与Facebook更新的方法或与iPhone版本相关的东西。该应用程序在FBrequest被调用后崩溃!请帮助我,我失去了我的声誉.......

+1

你是否启用NSZombie,如果没有启用它并获取调试日志?它暗示你正在调用NULL对象的方法。 –

+0

你的问题解决了吗? –

回答

1

看起来像有一个字符串你的应用程序被设置为指向NSNull。当您试图使该字符串为小写时,应用程序崩溃。 由于NSNull指向一个类型为NSNull的静态对象,试图将消息“lowercaseString”发送给它导致应用程序崩溃。 (如果它为零,Objective-C将简单地忽略该消息)

难道是有一个字符串在某处过去被设置为一个值,但由于某种原因现在已被删除并被设置为NSNull?这可能是由于FaceBook-API的变化引起的,但也可能是由服务器发送给你的变化,Facebook账户中的不同信息以及其他许多事情引起的。您正在使用的解析器可能会在服务器发送NULL值时设置NSNull而不是nil。

请记住,它可能根本不与Facebook相关,因为您在iPhone3GS上发现不同的行为。

您可以尝试在您的代码中查找您试图使其小写的NSString值。使用调试器来尝试识别NSNull类型的字符串。你可以像这样比较你的字符串到NSNull:

if (text == (id)[NSNull null]) { 
    // String is NSNull! 
} 
相关问题