【发布时间】:2011-07-15 15:15:11
【问题描述】:
我对以下代码有一个奇怪的问题:
MembersDetailViewController *m = [[MembersDetailViewController alloc]
initWithNibName:@"MembersDetailViewController" bundle:nil];
[m updateDataSource:[self.data objectAtIndex:[indexPath row]]];
[self.navigationController pushViewController:m animated:YES];
[m release];
此代码在我的 MembersListTableViewController 控制器的 tableView didSelectRowAtIndexPath 中调用。 MembersDetailViewController 可以打开另一个视图来显示地图:
MapViewController *mapViewController = [[MapViewController alloc]
initWithNibName:@"MapViewController" bundle:nil];
mapViewController.delegate = self;
mapViewController.latitude = @"54.5944504";//self.latitude;
mapViewController.longitude = @"-5.6592376";//self.longitude;
[mapViewController setModalTransitionStyle:UIModalTransitionStylePartialCurl];
[self presentModalViewController:mapViewController animated:YES];
[mapViewController release];
问题是当 MapViewController 被关闭并按下 MemberDetailViewController 上的后退按钮时,我收到以下错误消息:
-[MembersDetailViewController retain]: message sent to deallocated instance 0x51663e0
如果我注释掉 [m release],那么一切正常。如果没有调用 MapViewController,一切都还可以。我不明白为什么会这样?我总觉得如果分配 init 就需要释放?
任何帮助将不胜感激。
【问题讨论】:
-
你所拥有的似乎还不错。你确定它没有在其他地方过度发布吗?
标签: objective-c ios