私はこのようなものになります私のアプリケーションでいくつかのコードがあります。これは私のすべての時間のために働くなぜCocoaは空の文字列を返すのですか?
char *hash = (char*) sqlite3_column_text(get_bookmark, 0);
NSString* postHash = [NSString stringWithUTF8String:hash];
を。私はそれを見たことがないの作品です。私の知る限り、ほとんどのユーザーは問題を経験しません。しかし、私はpostHash
が空の文字列(@""
)であることがあります。
誰でも理由を説明できますか?
いくつかのより多くのコンテキスト/投機:
これが唯一のジェイルブレイク携帯電話に起こるようです。彼らについて何か違うことはありますか?私は通常、利用可能なメモリが少ないことを知ります。ここに貢献できるものは何ですか?
postHash
がテーブルセルで使用されていることがあります。正しく入力されないことがありますので、データベースコールはになるはずです。実際には、データベースにも空の文字列がある場合は、非常に似通ったコードのために問題が残ります。
hash
は、NULL以外の値を返しています。ここにNULLを強制すると、アプリケーションがクラッシュします。同様に、postHash
はnil
ではないため、同じ理由でアプリをクラッシュさせる可能性があります。
私はこれがおそらく記憶に関連していると考えています。メソッドが、あまりにも多くのメモリを割り当てようとすると、-didReceiveMemoryWarning
が呼び出されて何が起こるのですか?私は、ある時点で、Springboardがアプリを取り出していることを知っています。しかし、Cocoaが期待値ではなくヌル文字列を返す可能性はありますか?私が知る限り、長い文字列が存在するはずの空文字列が存在することによってのみ引き起こされたという報告がいくつか聞いたことがあります。
他の推測、理論、またはアイデアを歓迎します。
"Cocoaが期待値ではなくヌル文字列を返す可能性はありますか?" "ヌル文字列"はNULL(C文字列)またはnil(NSString)のいずれかになります。空の文字列はまったく異なります。文字列がない文字列ですが、NULL/nilは文字列ではありません。 –
これは、「空文字列」とは何かを理解していません。上記の「空文字列」とは、Objective-Cでは「空の文字列」、つまり「@」は、Cでは「」を意味します.Nil/NULL値を指定すると、アプリケーションがクラッシュします。 –
"NULL"は0を意味します。ヌル文字は '\ 0'です。つまり、0です。ヌルポインタは0です。ヌルの場合は文字列ではないため、Cでは「ヌル文字列」というようなことはありません。それはちょうど0です。 –