2013-10-14 55 views
0

嗨,我試圖讓NSStrings相等長度爲我的一個項目,但我似乎有麻煩。我有兩個字符串內存增加了嗎?添加零到一個NSString

NSString *[email protected]"123456"; 
    NSString *[email protected]"123"; 

我硬編碼他們成爲其他testing.I'm不同長度試圖在從單詞的追加0至所以它會像@「000123」和我想這方法來追加字符串,而是它建立內存,如果我離開程序運行足夠長的時間我的系統崩潰..任何幫助如何解決這個問題?有沒有不同的方法來做到這一點?

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

回答

1

你不改變字符串。 NSString對象是不可改變的,你要麼必須分配結果:

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

或使用NSMutableStringappendString:

[word2 appendString:@"0"]; 


您也可以扭轉你的邏輯, 「追加」 手段「添加到最後」。

追加|əpndnd| 動詞[with obj。 ] 將(某物)添加到書面文件的末尾:調查結果附在本章後面。

+0

謝謝,我忘了!那爲什麼它會建立記憶呢?那麼你將如何做到這一點? – OPJ

+0

'stringByAppendingString'返回一個自動釋放對象,但autorelease池永遠不會被耗盡。我對你的問題的解決方法是用'n'零個字符生成一個字符串,然後將另一個字符串附加到:'word2 = [[self stringWithZeroes:n] stringByAppendingString:word2]' – Sebastian

0

您需要更改您的代碼此

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

我認爲對於增加內存和應用程序崩潰的原因是因爲你在你的舊代碼無限循環。嘗試將NSLog放入舊代碼的while循環中,看看輸出是什麼。我建議的代碼不應該有這樣的問題。

+0

謝謝我新的問題是我只是不知道它的修復 – OPJ