2011-09-23 3 views
0

UINavigationController를 통해 UITableViewController 뒤에 UITableViewController를 열고 자하는 프로젝트가 있습니다.두 번째 로딩시 UITableViewController 충돌이 발생합니다.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    SDMetadataEntity *entity = [self.optionItems objectAtIndex:indexPath.row]; 
    SudzcDetailViewController *detailViewController = [[SudzcDetailViewController alloc] init]; 
    detailViewController.refName = entity.Name; 
    [self.navigationController pushViewController:detailViewController animated:YES]; 
    [detailViewController release]; 
    [entity release]; 
} 

하지만 탐색 모음의 뒤로 가기 (back) 버튼을 누르면, 다시 같은 항목을 누를 때, 그것은 충돌 : 것은 그것이이 함수가 호출되는 처음 작품입니다! 첫 번째 UITableViewController에서 다른 항목을 누르면 충돌이 발생하지 않습니다. 나는 내가 뭘 잘못하고 있는지 배우고 싶다.

+0

오류 로그를 게시 할 수 있습니까? 도움이 될 것입니다. –

답변

1

당신은

[entity release]; 

/복사/그것을 유지하지 않아야합니다.

+0

굉장, 그 지식에 감사드립니다! – Wesley

1

entity을 공개하면 안됩니다.

배열에서 해당 객체를 소유하고 있지 않으므로 소유하지 않으므로 방출 할 때 배열을 너무 일찍 할당 해제 할 수 있습니다. 당신은 당신이 단지에 대한 포인터를 가져 오는

[self.optionItems objectAtIndex:indexPath.row]; 

을 수행 할 때, 초기화하기 때문이 아니라

+0

감사합니다. 매력처럼 작동합니다! – Wesley

관련 문제