0

我制作了一个我在 App Store 中提交的 iphone 应用程序。该应用程序在 App Store 中存在大约一年。它基本上有一个 facebook 登录按钮。美好的一天它崩溃了,当我在我的 iPhone 4、iPhone 4s 中单击我的 Facebook 登录按钮时。当我尝试在我的 Macbookpro 中运行它时,它也崩溃了。我收到错误“由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[NSNull lowercaseString]: unrecognized selector sent to instance 0x2125ce8 '”............

它在我的 iPhone 3Gs 中运行良好......请帮助我。iPhone 应用程序如何在运行良好一年后崩溃。是与 Facebook 更新方法有关还是与 iPhone 版本有关。应用程序在调用 Fbrequest 后崩溃!请帮助我,我正在失去我的声誉.......

4

1 回答 1

1

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

会不会是某个地方有一个字符串曾经被设置为一个值,但由于某种原因现在已被删除并设置为 NSNull?这可能是由于 FaceBook-API 的变化,但也可能是由于服务器发送给您的内容的变化、您的 Facebook 帐户中的不同信息以及许多其他因素造成的。每当服务器发送 NULL 值时,您使用的解析器可能会设置 NSNull 而不是 nil。

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

您可以尝试在您尝试制作小写的代码中查找 NSString 值。使用调试器尝试识别 NSNull 类型的字符串。您可以像这样将您的字符串与 NSNull 进行比较:

if (text == (id)[NSNull null]) {
    // String is NSNull!
}
于 2012-06-21T08:14:13.533 回答