2013-10-14 1 views
0

안녕하세요 저는 NSStrings에 대해 서로 길이가 같아서 프로젝트를 진행하려고하는데 문제가있는 것처럼 보입니다. 내가 가지고 두 개의 문자열RAM이 쌓여 있습니까? NSString에 0을 추가합니다.

NSString *[email protected]"123456"; 
    NSString *[email protected]"123"; 
열심히 그래서 @처럼 "000123"을 살펴 보겠습니다하는 단어에서에 0을 추가하려고 다른 testing.I'm에 대해 서로 다른 길이로 그들을 코딩 그리고 난이 시도

메서드를 사용하여 문자열을 추가하는 대신 램을 빌드하고 프로그램을 오래 실행하면 시스템이 다운됩니다.이 문제를 해결하는 방법에 대한 도움이 필요하십니까? 이 작업을 수행하는 데 다른 방법이 있습니까?

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

답변

1

문자열을 변경하지 않았습니다. NSString 객체를 사용하면 하나가 결과를 할당해야, 불변 :

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

또는 NSMutableString을 사용하고 appendString:

[word2 appendString:@"0"]; 


또한 "추가"수단으로, 당신의 논리를 반전해야 "끝에 추가".

append | əpɛnd | 동사 [with obj. ] 서면 문서의 끝에 추가 (무언가) : 설문 결과는이 장에 추가됩니다.

+0

감사합니다. 그렇다면 왜 메모리를 구축 했습니까? 그러면 어떻게 그 일을 할 수 있겠습니까? – OPJ

+0

'stringByAppendingString'는 자동 렌더링 된 객체를 반환하지만 autorelease 풀은 절대로 배수되지 않습니다. 귀하의 문제에 대한 나의 접근 방식은'n '이 0 인 문자열을 생성 한 다음 다른 문자열을 추가하는 방법이 될 것입니다.'word2 = [[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

관련 문제