2013-03-25 19 views
1

我有一個具有API的Ruby on Rails應用程序,它是一個OAuth 2.0提供程序並使用Doorkeeper。我正在爲該應用程序創建一個iPhone客戶端,並使用gtm-oauth2庫進行身份驗證。這是iPhone應用程序的Github repository爲什麼我得到`無法識別的選擇器發送到實例`錯誤?

我管理使用庫執行身份驗證請求並獲取OAuth服務器的響應,但是(我認爲)當iPhone應用程序收到響應時,iPhone應用程序崩潰。我得到以下錯誤:

2013-03-25 07:30:51.563 Catapult for iOS[68917:c07] -[NSNull length]: unrecognized selector sent to instance 0x14f2678 
2013-03-25 07:30:51.564 Catapult for iOS[68917:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull length]: unrecognized selector sent to instance 0x14f2678' 
*** First throw call stack: 
(0x13c1012 0x11e6e7e 0x144c4bd 0x13b0bbc 0x13b094e 0xf074 0x185e3 0x13b51bd 0x13b50d6 0x1531a 0x1512b 0x14ae2 0x13b51bd 0x13b50d6 0x11d0a 0x1032a 0x13b51bd 0x13b50d6 0x79be 0x77ed 0x8cf2 0xcec589 0xcea652 0xceb89a 0xcea60d 0xcea785 0xc37a68 0x4a2a911 0x4a29bb3 0x4a67cda 0x13638fd 0x4a6835c 0x4a682d5 0x4952250 0x1344f3f 0x1344a39 0x1367734 0x1366f44 0x1366e1b 0x22be7e3 0x22be668 0x12affc 0x2c6d 0x2b95) 
libc++abi.dylib: terminate called throwing an exception 

我是一個完整的小白/初學者,當談到iOS開發和Objective-C編程,我正在學習如何使用這個小項目創建我的第一個應用程序。我在gtm-oaut2 Google Group上提出了同樣的問題,根據他們的看法,問題來自我的代碼而不是庫。問題是我的所有代碼都是從他們的wiki中獲取的,我無法確定應用程序崩潰的位置。如果我理解正確的話,在某些時候,我打電話給NSNull的length,但我不打電話給任何地方的length,因此我很困惑。此外,當應用程序崩潰,該行加亮後在main.m文件和錯誤(右標籤上,而不是在輸出)如下:

Thread 1: signal SIGABRT 

我不知道這意味着什麼。 ..

有誰知道這個問題可能是什麼請求?

+0

這應該會幫助您找到錯誤調用的確切位置:http://stackoverflow.com/a/7156336/792677 – 2013-03-25 07:59:22

+0

要獲取引發異常的確切行:轉到斷點選項卡並啓用「全部異常「的斷點,如果它不存在,則使用底部的+號加上它。 – Motasim 2013-03-25 08:01:44

回答

4

你說的沒錯,問題是,什麼地方你已經得到了length消息被髮送到NSNull的實例。要查明確切發生了這種情況,請在objc_exception_throw上設置一個斷點。您可以在Xcode UI中使用斷點選項卡左下角的小「+」按鈕來完成此操作。選擇「添加異常斷點」。然後調試器會在出現錯誤的地方停止程序,而不是等待程序真正崩潰。

+0

我沒有解決我的問題,但我設法查明它的起源和識別它。我認爲問題出在Rails OAuth提供者/服務器上。我現在試圖使用NSLog輸出JSON響應,但我無法找到放置NSLog的位置,我深入到gtm-oauth2的源代碼中。無論如何,這是另一個問題的主題。非常感謝你的幫助! – 2013-03-25 10:10:14

+0

它可以幫助我很多!謝謝 – 2015-12-08 12:00:22

0

那麼...你正確理解錯誤..你在某個地方調用一個NSNull實例的長度。

我必須找出發生了什麼。 我認爲這是發生在JSON響應中。也許你(或「代碼」)調用長度的東西,它期望它的NSString,而不是NSNull(即json有一個NULL值)。 如果你管理打印JSON響應,看看你是否找到映射到一個空值的重要嘗試......

0

NSNull並不長

響應您可以檢查documentation爲NSNull看到這種情況。如果不知道你的代碼庫在做什麼,我不知道在哪裏看,你必須調用[NSNull null];在某個時候獲得NSNull對象,或者你正在使用一個框架返回它。

相關問題