我的应用中有一个按钮可以切换容器视图,从tableview到Google地图视图。
交换机工作大约4次,然后当我再次尝试切换容器视图时,应用程序崩溃,我收到以下错误:
(71189,0xac12f2c0) malloc: *** mmap(size=1492946944) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
2013-06-17 21:37:28.876 Vicinitime[71189:12e03] *** Assertion failure in -[UISectionRowData refreshWithSection:tableView:tableViewRowData:], /SourceCache/UIKit_Sim/UIKit-2380.17/UITableViewRowData.m:400
2013-06-17 21:37:28.876 Vicinitime[71189:12e03] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Failed to allocate data stores for 373235904 rows in section 0. Consider using fewer rows'
*** First throw call stack:
(0x258b012 0x23b0e7e 0x258ae78 0x1e46665 0x14d969b 0x14dc224 0x13a0952 0x13a02dc 0x13a3dd6 0x13a8a7e 0x13452dd 0x23c46b0 0x533fc0 0x52833c 0x528150 0x4a60bc 0x4a7227 0x549b50 0x130aedf 0x2553afe 0x2553a3d 0x25317c2 0x2530f44 0x2530e1b 0x30617e3 0x3061668 0x12f4ffc 0x24fd 0x2425)
libc++abi.dylib: terminate called throwing an exception
(lldb)
以下是切换容器的代码。对于凌乱的代码感到抱歉,但viewcontroller2实际上是一个tableview,只是错误地命名。 det是BOOL
-(IBAction)changer:(id)sender
{
if(det == TRUE)
{
test *viewController2 = [[test alloc]init];
viewController2.view.frame = self.container.bounds;
[viewController2 willMoveToParentViewController:self];
[self.container addSubview:viewController2.view];
[self addChildViewController:viewController2];
[viewController2 didMoveToParentViewController:self];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.container cache:YES];
[UIView commitAnimations];
det = FALSE;
}
else
{
ViewController *viewController1 = [self.storyboard instantiateViewControllerWithIdentifier:@"vc1"];
viewController1.view.frame = self.container.bounds;
[viewController1 willMoveToParentViewController:self];
[self.container addSubview:viewController1.view];
[self addChildViewController:viewController1];
[viewController1 didMoveToParentViewController:self];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.container cache:YES];
[UIView commitAnimations];
det = TRUE;
}
}
知道发生了什么事吗?