2011-04-27 22 views
0

나는 버튼을하기를 클릭에 다음과 같은 일을 할 :"EXC_BAD_ACCESS"이 문제를 어떻게 해결할 수 있습니까?

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex == 0) 
    { 
     if (QuestionMutableArray==nil) { 
      [self testIterator]; 
     } 
     else 
     { 
      [myMutableArray release]; 
      [myDictionary release]; 
      [self dismissModalViewControllerAnimated:YES]; 

      //[self release]; 
     } 
    } 
} 

내가 다시이있는 tableView를 내려왔다 때 ...이 코드를 다시 parentView 컨트롤러로 가기 후에 내가 새 NSMutableArray를 내있는 tableView를 다시로드합니다. dismissModalViewController를 사용하여 내 컬렉션 (NSMutableArray 또는 사전)을 비우는 방법은 무엇입니까?

답변

0

해제하지 마십시오 개체를 nil.

1

removeAllObjects 방법을 사용하십시오.

1

EXC_BAD_ACCESS 오류는 출시 된 메모리에 액세스하려고 시도 할 때 발생합니다. 아마도 배열이나 사전에 액세스하려고 시도했을 것입니다. 대신 배열 또는 사전에서 개체를 제거하십시오.

+0

- (무효) alertView (UIAlertView *) alertView clickedButtonAtIndex (NSInteger) buttonIndex { 경우 (buttonIndex == 0) { \t \t \t \t [자기 dismissModalViewControllerAnimated : YES]; \t \t \t \t \t [QuestionMutableArray removeAllObjects]; \t \t \t \t XmlManipulatorObject = [[xmlManipulator alloc] init]; \t \t QuestionMutableArray = [[XmlManipulatorObject ReadXml] retain]; \t \t [self.tableView release]; \t \t \t \t }} 당신이 난 그냥 내가 돌아 왔을때는 해결책이 될 수있는 출처에서 내 List.It의로드에서 새로운 데이터를받지 오전 Array.But에서 모든 개체를 제거 말했듯이 내가 시도? –

0

EXC_BAD_ACCESS은 일반적으로 두 가지 이유에서 온다 :

  • 문자열로 시작하지 '@'기호와
  • 불쌍한 메모리 관리를.

조건에 따라 배열과 사전을 릴리스했지만 올바르게 초기화하지 않은 것으로 가정합니다. 사용하기 전에 제대로 초기화되었는지 확인하고 완료 될 때까지 유지하십시오. 인터페이스 빌더에서 재생할 때도 발생할 수 있습니다. IBOutlet을 여러 번 연결하여 이름을 결정하지 못하고 속성 이름을 변경하는 경우가 있습니다. 각 연결 xcode가 dealloc 메서드에 release 문을 자동으로 넣은 후에 속성이 두 번 릴리스 된 경우 해당 뷰 컨트롤러에서 IB를 사용했는지 확인할 수도 있습니다.

관련 문제