으로 보내 주시면이 하나만 도와주세요. Objective C에서 지금까지 어떤 미친 행동을 보았지만이 하나가 나를 자살로 만듭니다. 음, 실제로는 ...iphone 메시지는 할당 해제 된 인스턴스
주소 할당 해제 된 개체 문제입니다.
시나리오 : 행을 선택하면 DetailView가 표시되고 피드가 UIWebView에 표시되는 RSS 피드가있는 tableView가 있습니다. DetailView 내에서 이전 및 다음 피드로 미끄러지는 기능이 필요하므로
을 저장하는 NSMutableDictionary로 DetailView를 초기화합니다. 1. 모든 NSMutableArray가 키 : @ "items"및
에서 피드합니다. 2.) NSNumber tableView에서 선택한 행의 인덱스가있는 positionInArray입니다.
후자는 현재 피드가있는 배열 인덱스의 값을 유지함으로써 이전 피드와 다음 피드로 스 와이프 할 수 있습니다. 이 값으로 내있는 TableView에서 positionInArray-1 또는
positionInArray + 1 ...
를로드 할 수 있습니다 나는이 예상대로 이- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//Call an action only if the pressed cells are not the adMob ones
if (indexPath.row != 0) {
NSMutableDictionary *theItem = [[NSMutableDictionary alloc] init];
[theItem setValue:items forKey:@"items"];
//Add the position of item in the items array to the NSDictionary for current item so it can be
//used in nextController to scroll to prev and next
NSNumber *positionInArray = [NSNumber numberWithInt:indexPath.row-1];
[theItem setValue:positionInArray forKey:@"positionInArray"];
DetailController *nextController = [[DetailController alloc] initWithItem:theItem];
[self.navigationController pushViewController:nextController animated:YES];
[nextController release];
[positionInArray release];
[theItem release];
}
이제 모든 것이 작동합니다. 피드가있는 DetailView를 여는 TableView에서 행을 선택합니다. 왼쪽 및 오른쪽으로 스 와이프하면 문제없이 모든 피드가 표시됩니다. 그러나! 내가 마지막으로 공급 또는있는 TableView에서 마지막 전에 하나를 선택하면, 피드는 평소와 같이 제시하지만 내가하려고하면 왼쪽이나려면 오른쪽으로 스 와이프 내가받을 다음과 같은 오류 :
2011-03-03 10:50:15.039 RssReader[72137:207] Swipe Right Movement done!
2011-03-03 10:50:15.041 RssReader[72137:207] *** -[CFNumber intValue]: message sent to deallocated instance 0x6240460
내가 수 있도록 시도 좀비 가드의 malloc P
을 내가 선을 [positionInArray release]
또는 [theItem release]
응용 프로그램을 제거하는 경우 : 그러나 이것은 내가 가진 유일한 것은 ...
문제의 해결책은 정말 제가 심지어/해제가 무엇을 의미하는지 메모리 할당 이해한다 생각 만드는 것입니다입니다 어떤 문제없이 작동합니까 ??? 방법? 왜? 왜 오?
positionInArray 객체를 놓으면 다른 객체 NSMutableDictionarytheItem 내부를 전달할 수 없다는 것을 이해할 수 있습니다. 나는 그것을 (할당함으로써) 사본을 사용하고 있다고 생각했기 때문에 나는 척한다고 말한다.
또한, 내가 이해할 수없는 것은 :
는 왜 그렇지 않은 지난 이틀 동안 내가로드 피드 있다고 13 일을하고 있습니까?
ItItem 개체를 공개하지 않으면 왜 작동합니까? 그 객체 위의 몇 줄이 * nextController를 초기화하는 데 사용되었다는 것을 의미하며, 거기에서 작업 할 로컬 복사본을 만들었습니까?
자세한 정보가 필요하면, 라인 [positionInArray release];
이 VAR를 제거 ... 사전에 감사합니다, L
을 읽어 주셔서 감사합니다. 첫 번째 게시물에서 볼 수 있듯이 해결했지만 왜이 오류가 발생했는지 전혀 알 수 없습니다. 나는이 모습을 보았어야했는데 해제 할 필요가없는 것은 _NSString_ 개체라고 생각했습니다. 질문은 지난 두 피드가 아닌 처음 13 개의 피드를 열 때 DetailView를 열 때 스 와이프 기능이 작동하는 이유는 무엇입니까? 첫 번째 게시물을 다시 읽으면 마지막 두 피드 중 하나를 열고 왼쪽/오른쪽으로 스 와이프 한 경우에만 문제가 발생한다는 것을 알 수 있습니다. – luigi7up