0

このエラーは何ですか? 可変型を使用していますが、まだ機能していません!

エラー:

キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: 'deleteCharactersInRange で不変オブジェクトを変更します:'

NSMutableString *line= [NSMutableString stringWithString:@"here is the string"];
[line deleteCharactersInRange: NSMakeRange(1,9 )];
4

3 に答える 3

0

私の新しい答え:

あなたの新しいコードでは、最後に 1 行追加しました。

NSMutableString *line= [NSMutableString stringWithString:@"here is the string"];
[line deleteCharactersInRange: NSMakeRange(1,9 )];
NSLog( @"line is %@", line );

コンソール出力は次のとおりです。

2011-11-25 06:08:13.248 TestingCommandLine[13324:903] line is he string

例外はスローされません。それは私のために働いているようです!

私の元の回答(元の質問に対する):

何も入っていない行から文字を削除することはできません (したがって例外です)。

ソースの 2 行の間に追加のコードはありますか? そうでない場合は、何も入っていない有効な NSMutableString があります。また、何も含まれていない変更可能な文字列からは何も削除できません。

于 2011-11-25T10:48:54.923 に答える
0

コードがここで引用したとおりに見える場合、問題は空の文字列から何かを削除しようとしていることです。しかし、削除できるものがないため、エラーです。

于 2011-11-25T10:50:17.153 に答える
0

例外名は明確です:「無効な引数」。あなたがしたことは、空の可変文字列を作成し、制限をはるかに超えて 1..9 の範囲内の文字を削除しようとすることでした。この関数は範囲外に対して寛容ではありません: 例外が発生します。「line has value!」というコメントを書くのはなぜですか? 投稿した2行のコードの間に生成していますか?

于 2011-11-25T10:50:43.307 に答える