UITableView가 있고 행에 didSelectRowAtIndexPath가 호출되면 완벽하게 다음보기로 전환됩니다. 그러나 'back'buttton을 클릭하고 이전에 선택한 동일한 행을 선택하면 ... 내 앱이 다운됩니다. 다른 행을 선택하면 충돌이 발생하지 않습니다. 코드는 다음과 같습니다.동일한 행을 두 번 선택하면 UITable 충돌이 발생합니다.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary *tempEventDictionary = [[NSDictionary alloc]initWithDictionary:[arrayWithEvents objectAtIndex:indexPath.row]];
NSLog(@"%i",tempEventDictionary);
//push to new view and set myArray in the cardPage
CardPageViewController *cardPageViewController = [[CardPageViewController alloc] init];
cardPageViewController.eventDictionary = tempEventDictionary;
[self presentModalViewController:cardPageViewController animated:YES];
[cardPageViewController release];
[tempEventDictionary release];
}
“EXC_BAD_ACCESS”
으로 오류가 발생했습니다.
위에서 볼 수 있듯이 NSDictionary의 포인터 주소를 인쇄하고 있으며 각 indexPath.row에 대해 동일한 주소를 찾고있는 것으로 보입니다. 즉, 포인터 위치가 해제되고 동일한 indexPath.row 값으로 다시 정렬하려고하면 이전 포인터 주소가 검색되지만 아직 존재하지 않습니다. 어쩌면 여기서 완전히 틀릴 수도 있습니다. 어떤 도움을 주셔서 감사합니다.
크래시의 출력은 무엇입니까? – WrightsCS
출력이 없습니다. 그냥 충돌. 내 사전 autorelease를 만들려고 할 때 한 번 malloc 것을 보았다고 생각합니다. – nicholjs
확실히 출력이 있습니다. gdb 콘솔을 확인하고 마지막 메시지를 붙여 넣으십시오. 또한 왜 int 형식 지정자 ("% i")를 사용하여 NSDictionary를 인쇄하고 있습니까? –