1

特定のメソッドに絞り込むまで、アプリでランダムにクラッシュしていました。その方法ではNSString、パラメータとしてを期待しています。これNSStringがゼロになる場合もあります。その場合、メソッドは終了し、害はありません。

メソッドのパラメーターを実行するとNSLog(@"%@", myString)、次のいずれかが得られることがわかりました。

  1. 実際のNSStringの内容
  2. (ヌル)
  3. <null>

最初の2つは、私の方法で予期され、処理されます。3番目の<null>は、でアプリをクラッシュさせ-[NSNull length]: unrecognized selector sent to instance 0x1b2ace8ます。

nilまたはをチェックすることで問題を回避する方法を見つけましたisKindOfClassが、私の質問は(null)と<null>の違いは何ですか?

4

1 に答える 1

5

(null)値とともにNSLog()フォーマット指定子を使用したときに出力される文字列です。シングルトン(を介してアクセスする)に送信した結果です。%@nil<null>descriptionNSNull[NSNull null]

NSNullNSArrayCocoaコレクション(およびNSDictionary)では、を含めることができないため、「オブジェクトなし」プレースホルダーとして使用されますnil

NSNull2つの説明文字列は紛らわしいほど似ており、これをもう少し明確にするために、バグを報告する必要があると主張する人もいるかもしれません。

于 2012-07-02T04:01:39.197 に答える