0

こんにちは、私のプロジェクトで NSStrings の長さが互いに等しくなるようにしようとしていますが、問題が発生しているようです。2本の弦を手に入れました

    NSString *word1=@"123456";
    NSString *word2=@"123";

他のテスト用に異なる長さになるようにハードコーディングしました。単語の先頭に0を追加しようとしているので、@ "000123"のようになります。この方法で文字列を追加しようとしましたが、代わりにRAMを構築しますそして、プログラムを長時間実行したままにしておくと、システムがクラッシュします..これを修正する方法について何か助けはありますか? これを行う別の方法はありますか?

    while ([word1 length]>[word2 length]){
        [word2 stringByAppendingString:@"0"];
    }
    while ([word1 length]<[word2 length]){
        [word1 stringByAppendingString:@"0"];
    }
4

2 に答える 2

1

弦を交換していません。NSStringオブジェクトは不変です。結果を割り当てる必要があります。

word2 = [word2 stringByAppendingString:@"0"];

または使用NSMutableStringしてappendString:

[word2 appendString:@"0"];


「追加」は「最後に追加」を意味するため、ロジックを逆にする必要もあります。

追加 |əˈpɛnd| 動詞 [ obj 付き。] 文書の末尾に(何かを)追加します。調査の結果は、この章に追加されます。

于 2013-10-14T23:16:01.730 に答える
0

コードをこれに変更する必要があります

while ([word1 length]>[word2 length]){
        word2 = [word2 stringByAppendingString:@"0"];
}
while ([word1 length]<[word2 length]){
        word1 = [word1 stringByAppendingString:@"0"];
}

メモリの増加とアプリのクラッシュの理由は、古いコードで無限ループが発生しているためだと思います。古いコードの while ループに NSLog を入れてみて、出力を確認してください。私が提案したコードには、そのような問題はありません。

于 2013-10-14T23:34:35.300 に答える