2013-03-25 73 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对象,或者你正在使用一个框架返回它。

相关问题