2012-06-21 108 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! 
} 
相關問題