iOS - 自定义segue内存泄漏

时间:2013-05-22 18:09:09

标签: ios objective-c xcode memory-leaks segue

我有两个使用滑动手势识别器触发自定义segue的viewcontrollers。

自定义segue是这样的:

-(void)perform{
UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
UIViewController *destinationController = (UIViewController*)[self destinationViewController];

CATransition* transition = [CATransition animation];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;

[sourceViewController.navigationController.view.layer addAnimation:transition forKey:kCATransition];
[sourceViewController.navigationController pushViewController:destinationController animated:NO];
}

它有效,但每次增加内存,我找到了这个解决方案:how to clear memory of previous ViewController

但是如果在viewController名称中我将主ViewController放入滑动它自身,如果我把第二个ViewController名称它崩溃。

如何解决内存问题?谢谢。

1 个答案:

答案 0 :(得分:1)

如果我正确地理解了你的问题,那么随着每个segue的执行,内存增加是很自然的,因为就其本质而言,导航控制器会在你添加的每个新控制器上不断推进其堆栈。这不是泄漏,因为您仍然可以从导航控制器堆栈获取指向这些视图控制器的指针,并且当您丢失对内存的一部分的每个引用时都会发生泄漏。 使用导航控制器时,没有从内存增量中逃脱,这是它的预期用途(但是,您可以释放每个源视图控制器正在使用的任何资源,并且可以在将新视图控制器推入堆栈之前在需要时重新创建)

也许问题是你不想使用导航控制器?如果你能提供更多关于你想要完成什么的细节,我可能会更有帮助。