簡體   English   中英

為什么我得到一個“無法識別的選擇器發送到實例”錯誤?

[英]Why am I getting a `unrecognized selector sent to instance` error?

我有一個帶有API的Ruby on Rails應用程序,它是一個OAuth 2.0提供程序並使用Doorkeeper。 我正在為該應用程序創建一個iPhone客戶端,並使用gtm-oauth2庫進行身份驗證。 這是iPhone應用程序的Github存儲庫

我管理使用庫執行身份驗證請求並從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

我不知道這意味着什么......

有誰知道問題可能是什么?

你是對的,問題是你已經將length消息發送到NSNull一個實例。 要確定究竟發生了什么,請在objc_exception_throw上設置斷點。 您可以在Xcode UI中使用斷點選項卡左下角的“+”按鈕執行此操作。 選擇“添加異常斷點”。 然后調試器將在發生錯誤的位置停止程序,而不是等待程序實際崩潰。

嗯...你正確地理解了錯誤..你在NSNull實例上調用長度。

我必須找出這發生的地方。 我認為這是在JSON響應中發生的。 也許你(或“代碼”)在它期望它的NSString東西上調用長度,但它是NSNull (即json具有NULL值)。 如果您設法打印json響應並查看是否找到映射到空值的鍵,請嘗試...

NSNull沒有響應長度

您可以查看NSNull的文檔 ,看看是否是這種情況。

如果不知道你的代碼庫在做什么,我不知道在哪里看,你必須調用[NSNull null]; 在某些時候獲取NSNull對象或者您正在使用某個返回此框架的框架。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM