2011-09-02 3 views
1

항목 목록을 UITableview에로드하고 선택한 행에 대한 경고를 클릭하여 표시 할 수있었습니다. 그러나 경고에서 "ok"라고 말한 후 이미 선택된 행에서 다시 읽으면 "코드 1 : 프로그램 수신 신호 : EXC_BAD_ACCESS"라는 코드가 나옵니다. 아래 코드를 살펴보십시오.UITableView didSelectRowAtIndexPath 오류 - 항목을 다시 선택할 때

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSDictionary *playerselected = [exercises objectAtIndex:indexPath.row]; 
    NSString *video = [playerselected valueForKey:@"video"]; 

    NSString *msg = [[NSString alloc] initWithFormat:@"You have selected %@", video]; 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Player selected" 
                message:msg 
                delegate:self 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil];  

    [alert show];  
    [alert release]; 
    [video release]; 
    [msg release]; 

} 

제발 여기서 어떤 문제가 될 수 있는지 제안 해주세요.

+0

확인해 보았습니다. 특히 염두에 두어야 할 질문이 있습니까? 농담 만하고, 특정 질문을하면 도움이되지만 문제점을 해결하는 데 도움이되도록 가능한 한 자세하게 설명하십시오 (예를 들어 오류가 발생하는 행). 약간의 설명만으로 코드를 버리면 다른 사람들이 도울 수있는 좋은 인센티브가 될 수 없습니다. – Mac

+0

Sry MAc .. 위의 질문을 수정하십시오. – UnlimitedMeals

답변

2

video을 공개하지 마십시오.

NSDictionary에서 값을 검색 할 때 명시 적으로 retain이 아닌 이상 값을 소유하지 않습니다.

문자열을 검색 할 때 더 구체적으로는 여전히 사전에 소유되어 있습니다. release 때, 당신은 자신이 소유하지 않은 물건을 풀어 놓았고, 그 결과 과다 풀려났습니다. 결과적으로 할당이 해제되고 다음에 액세스하려고하면 메모리가 더 이상 유효하지 않게되고 응용 프로그램이 충돌합니다.

+0

Thx Mac. 나는 내가하고있는 것을 깨달았다. 이것은 효과가 있었다. – UnlimitedMeals

관련 문제