1

APIを備えたRubyonRailsアプリケーションがあります。これは、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グループで同じ質問をしましたが、彼らによると、問題はライブラリではなくコードに起因しているとのことです。問題は、私のコードがすべてwikiから取得されており、アプリがクラッシュする場所を特定できないことです。正しく理解していれば、ある時点lengthでNSNullを呼び出していますがlength、どこにも呼び出していないため、混乱しています。また、アプリがクラッシュすると、強調表示された行がmain.mファイルにあり、エラー(出力ではなく右側のラベルにあります)は次のとおりです。

Thread 1: signal SIGABRT

それが何を意味するのか分かりません...

誰かが問題が何であるか知っていますか?

4

3 に答える 3

4

問題はlength、のインスタンスにメッセージが送信されている場所にあるということですNSNull。これが発生している場所を正確に特定するには、objc_exception_throwにブレークポイントを設定します。これは、ブレークポイントタブの左下隅にある小さな「+」ボタンを使用してXcodeUIで実行できます。「例外ブレークポイントの追加」を選択します。次に、デバッガーは、プログラムが実際にクラッシュするのを待つのではなく、エラーが発生した時点でプログラムを停止します。

于 2013-03-25T08:01:08.020 に答える
0

ええと...あなたはエラーを正しく理解しました..あなたはどこかでNSNullインスタンスの長さを呼び出しています。

私はこれがどこで起こっているのかを見つけなければなりません。これはJSON応答で発生していると思います。たぶん、あなた(または「コード」)は、それが期待する何かに長さを呼び出していますが、NSString代わりにそうですNSNull(つまり、jsonはNULL値を持っています)。json応答を出力して、null値にマップされたキーが見つかったかどうかを確認してみてください...

于 2013-03-25T07:59:52.533 に答える
0

NSNullは長さに応答しません

NSNullのドキュメントをチェックして、これが当てはまるかどうかを確認できます。

コードベースが何をしているのかわからないので、どこを見ればよいのかわかりません。[NSNullnull]を呼び出す必要があります。ある時点でNSNullオブジェクトを取得するか、これを返すフレームワークをどこかで使用しています。

于 2013-03-25T09:27:12.593 に答える