2010-08-23 3 views
0

배열에 요소를 동적으로 추가하려고합니다. 이것을 위해 나는 사용하고있다addObject가 모든 배열에 동일한 값을 만듭니다.

[myArray addObject:myword]; 

myword is a NSMutableString type object. 

클릭하면 myword가 변경된다. 그러나 배열의 모든 요소는 마지막 값을 저장합니다. 처음 배열에 1 element = "me"가 있다고 가정하십시오. 두 번째 시간 배열에는 2 개의 element = "me", "you"가 있어야합니다. 그러나 그것은 "나", "나"를 보여줍니다. 무엇이 문제일까요?

+0

단어를 만들고 추가하는 코드를 게시하십시오 (아마도 버튼 동작 메서드 ..) – lukya

+0

왜 가변 문자열을 사용하고 있습니까? 대부분의 경우 NSString을 사용해야합니다. – JeremyP

답변

3

아마도 NSMutableString의 동일한 인스턴스를 반복해서 저장하고 있기 때문에 변경하면 자연스럽게 "모든"요소가 변경됩니다. 결국 그들은 모두 같은 대상을 가리 킵니다.

시도 :

[myArray addObject:[[myword copy] autorelease]]; 

아니면 NSMutableStrings이해야하는 경우, 당신은 여기에 autorelease 필요

[myArray addObject:[[myword mutableCopy] autorelease]]; 

을, 그렇지 않으면 당신은 메모리 누수가 것입니다.

관련 문제