0

インターネットから情報をダウンロードしてファイルに入れるiPhoneアプリケーションがありますNSString。大きなファイルをダウンロードしてその1つの文字列に入れるまでは正常に動作し、エラーが発生します

-[__NSArrayM の長さ]: 認識されないセレクターがインスタンス 0x6b6dc60 に送信されました

ある時点でEXC_BAD_ACCESSエラーが発生していましたが、現在は表示されません。私はそれがメモリの問題だと推測していますが、それを修正する方法がわかりません。文字列変数の大きさに制限はありますか? 助言がありますか?また、エラーが表示されないこともありますが、ほとんどの場合表示されます。前もって感謝します。

4

3 に答える 3

2

配列に対して呼び出されるメソッドを呼び出して配列の長さを取得しようとしているように見えますが、配列の長さを取得するには、たとえば次のようなメソッドlengthを使用します。count

NSInteger numberOfElements = [someArray count];

お役に立てれば!

PSlengthメソッドは存在しますが、文字列内の文字数を取得するために NSString オブジェクトで使用されます。

- - アップデート - - -

Ray Wenderlich の「My App Crashed, Now What?」チュートリアルから:

エラー メッセージ「認識できないセレクターがインスタンス XXX に送信されました」は、アプリが存在しないメソッドを呼び出そうとしていることを意味します。

したがって、コードのどこかで、lengthNSArray 型のオブジェクトに対してメソッドを呼び出しています。

実際にはlengthNSMutableArray 型のオブジェクトでメソッドを呼び出しており__NSArrayM、NSMutableArray オブジェクトを表しているため、エラーからそれがわかります。通常の NSArray オブジェクトは次のように表されます__NSArrayI(接尾辞「M」は「可変」を表し、接尾辞「I」は「不変」を表します)。

私と非常によく似た答えを持つ非常によく似た質問さえ見つけました:

NSArrayM の長さ: 認識されないセレクターがインスタンスに送信されました

  • へー、私は前にこれを持っていました。どこかでこれをやっています: [配列の長さ]; ただし、配列は「長さ」ではなく「カウント」を使用します。
于 2012-07-05T00:38:53.987 に答える
1

これは にキャストしようとしているためにNSMutableArray発生しています。NSStringを使用するだけでこのエラーを取り除くことができますobjectAtIndex:0

を使用するobjectAtIndex:0と、オブジェクトが返されます。あなたの場合、そのオブジェクトはあなたのものであり、NSStringエラーが削除されます。例えば

self.quizTextView.text=[questionTexts objectAtIndex:0];
于 2013-01-19T13:10:39.507 に答える
0

エラー メッセージを改善するには、ゾンビをオンにしてみてください。おそらく、期待する前に割り当てが解除されているものです。また、"Allocations" または "Leaks" インストゥルメントでアプリを実行して、オブジェクトが予想よりも早く解放された理由を追跡することもできます。

于 2012-07-05T00:11:37.277 に答える