0

내 문제는 내 NSMutableArray이 항상 objectatindex -method를 사용하여 마지막 요소를 가져 오는 것입니다.NSMutableArray objectatindex는 항상 마지막 객체를 표시합니다.

UIViewController에서 파생 된 일부 클래스가있는 배열이 있습니다. 보기를 하나씩 보여주고 싶습니다. 내가 실제보기를 얻고 그런 다음으로 이동하려는 그 후

ContactViewController *ContactView = [[ContactViewController alloc]init]; 
QuestionViewController *QuesView = [[QuestionViewController alloc]init];; 
ContactView.mydelegate = self; 
[QuesView setDelegate:self]; 


[Views addObject:ContactView]; 

Views =[[NSMutableArray alloc]initWithCapacity:11]; 
for (int i = 0; i < 11; i++) { 
    [QuesView setParam:@"text" :i ]; 
    [Views addObject:QuesView]; 
} 

:

먼저 내가 배열을 채울 새로운 뷰가 표시 및 숫자되지

-(IBAction)Button:(id)sender 
{ 

    UIViewController *newView = [[UIViewController alloc]init]; 
    newView = (UIViewController*)[Views objectAtIndex:enumerator]; 
    [self presentViewController:newView animated:YES completion: nil]; 
    enumerator++; 
    //dismiss old view here.... 

    NSLog(@"number %d",[newView getNumber]); 
} 

로그에서 항상 배열의 마지막 번호입니다. 나는 "Views"의 모든 요소를 ​​통해 for 루프를 만들려고했지만 모든 객체에 항상 마지막 숫자가 있습니다. ...

어떤 힌트가 있습니까?

답변

2

아마도 여러 개의 QuestionViewController 인스턴스를 만들고 싶을 것입니다. 하지만 실제로는 하나의 객체 만 만들고 setParam을 11 회 호출합니다.

또한이 행 [Views addObject:ContactView]은 새 배열 객체를 만들고 다음 행의 Views에 할당하기 때문에 효과가 없습니다. UIViewController *newView = [[UIViewController alloc]init]도 마찬가지입니다. ARC를 사용하기를 바랍니다. 그렇지 않으면 메모리 누수가 발생합니다!

+0

대단히 감사합니다! 너가 확실히 맞아! ARC를 사용 중입니다 ... – Phil

관련 문제