2013-10-14 28 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