2013-07-05 3 views
0

OK. 이것에 관해서 우스운 시간을 보냈습니다. 나는 꽤 바보 같은 느낌으로 인터넷을 둘러 보았다. 나는 x, 2, "+"의 배열 인 프로그램을 가지고있다. 그래서 나는 프로그램의 사본을 만들고 x를 variableValues의 값 (5)으로 바꾸려고합니다.MSMutableArray의 개체를 다른 개체로 바꾸는 방법

아무도 세상에서 이것을 어떻게 할 수 있습니까?

+ (double)runProgram:(id)program usingVaraiableValues:(NSDictionary *)variableValues { 

    NSMutableArray *program2 = program; 
    for (NSString *obj in program) { 
     NSNumber *number = [variableValues objectForKey:obj]; 
     if (number) { 
      int index = [program indexOfObject:obj]; 
      NSLog(@"index = %i", index); 
      [program2 replaceObjectAtIndex:index withObject:number]; 
     } 
    } 
    return [self runProgram:program2]; 
} 
+1

'program2 = program'은 복사본을 만들지 않습니다. – Kevin

답변

1

실제로 program2program 사본 아니며, 동일한 메모리 어드레스에 대한 참조이다. 대신 NSMutableArray *program2 = [program mutableCopy];을 사용해보십시오.

+0

'program'의 타입이'id'이기 때문에 이것은 아마 작동하지 않을 것입니다. :-P – lnafziger

+0

아마도, 아마도 그렇 겠지. 게다가,'program'이'NSArray'가 아니라면,이 라인은 아마'int index = [program indexOfObject : obj];'도 동작하지 않을 것입니다. – leoformaggio

+1

그래, 문제는 컴파일러가'id'를'mutableCopy' 메시지를 받아들이는 것으로 인식하지 못한다는 것입니다. NSArray에 캐스트해야합니다 ... – lnafziger

관련 문제