2011-10-20 3 views
0

기본적으로 (기업, 학교 등의) 일부 특수 효과를 표시해야하는 MKMapView의 기본보기가있는 앱을 만듭니다. 주석은 KML 파일에서 가져온 것인데 동적으로 '두 번째보기, UITableView, 맵에서 주석을 나타내는 범주가 있습니다. 일부 범주를 선택하면 ID가있는 문자열이 표시되고 뒤로 단추를 클릭하면이보기가이 문자열을 전달해야합니다 '쿼리 문자열'의 다른 부분을 보유하고있는 다른 문자열로 연결되는 MapView에 전달되므로 KML 파일을 다운로드하고 주석을지도에 표시해야합니다. 문제가 있습니다. 모든 셀을 선택 (선택) 할 수 있지만 이전보기로 이동하려면 탐색 모음 버튼 '뒤로'를 클릭하면 응용 프로그램이 충돌합니다. 셀을 선택하지 않고 뒤로 버튼을 클릭하면 , 응용 프로그램이 계속 충돌하지만 로그 파일에서 이전 뷰로 전달한 문자열이 nil이라는 것을 알 수 있습니다. 한 뷰에서 다른 뷰로 매개 변수를 전달하는 코드를 준비했으며 진행 상황을 이해하지 못합니다 나는보기들 사이에 문자열이 전달되는 것과 관련된 코드 만 게시하고 있습니다.보기 사이에 문자열 전달 : 앱 충돌

GisListViewController.m :

- (void)tableView:(UITableView *)tableView 
    didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__); 

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
[tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:NO]; 
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

if (cell.accessoryType == UITableViewCellAccessoryNone) { 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} else if (cell.accessoryType == UITableViewCellAccessoryCheckmark) { 
    cell.accessoryType = UITableViewCellAccessoryNone; 
} 

NSMutableDictionary * myDictionary = [[NSMutableDictionary alloc] initWithCapacity:60]; 
int i = 0; 
for (i = 0; i < [gisCategoryID count]; i++) { 
    [myDictionary setObject:[gisCategoryList objectAtIndex:i] forKey:[gisCategoryID objectAtIndex:i]]; 
    NSMutableString *paramString2 = [[[NSMutableString alloc] init] autorelease]; 
    [paramString2 appendFormat:@"%@&", [myDictionary objectForKey:[gisCategoryID objectAtIndex:i]]]; 

    paramString = paramString2; 
} 

NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); 
} 

- (void) viewWillDisappear:(BOOL) animated 
{ 
NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__); 

NSString *httpString = @"http://www.ikub.al/hartav2/handlers/kmlgenerator.ashx?layerid="; 
NSString *finalkmlString = [ httpString stringByAppendingString:paramString ]; 

[[self delegate] setKmlString:finalkmlString]; 

NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); 
} 

그것이 도움이되기를 바랍니다.

답변

2

나는 다음과 같이 당신이 다음 임무를 수행해야 오토 릴리즈를 사용하는 경우 오토 릴리즈이

NSMutableString *paramString2 = [[NSMutableString alloc] init]; 
+0

감사합니다! 완벽하게 작동했습니다. 이제 더 이상 충돌하지 않습니다. – Hari

1

처럼 problem.Try을주는 것 같아요 : -

paramString = [paramString2 retain]; 

을 당신은 을 경우 autorelease를 사용하지 않는 경우 다음 누락을 피하기 위해 다음과 같은 할당을 사용해야합니다. 이 도움이

paramString = [paramString2 copy]; 

희망 ...

+0

고마워, 나는 이것을 테스트하지는 않았지만 효과가있을 것이다. 미안하지만, 처음 구현 한 이래로 나는 그것을 정답으로 받아 들였다. – Hari