kel*_*lly 8 objective-c uiviewcontroller ios
我正在我的应用程序中创建自定义转换并遇到两个问题.如果我设置视图控制器来处理两者UIViewControllerAnimatedTransitioning,UIViewControllerTransitioningDelegate我遇到的问题是我的视图控制器永远不会被释放.具体来说,这会创建保留:
self.transitioningDelegate = self;
Run Code Online (Sandbox Code Playgroud)
如果我不这样做,并把UIViewControllerAnimatedTransitioning它UIViewControllerTransitioningDelegate放在一个单独的NSObject名为TransitionController并设置如下:
self.transitioningDelegate = [[TransitionController alloc] init];
Run Code Online (Sandbox Code Playgroud)
在UIViewController被释放,但我得到了TransitionController对象的内存泄漏.现在有人,我做错了吗?
我遇到了同样的问题并且能够解决它.
自定义转换API没有很好的文档记录,并且需要大量的试验和错误才能使一切正常.
让我向您介绍一下如何在没有任何内存问题的情况下使其正常工作:
VCA =想要以模
态方式呈现VCB的视图控制器VCB =模态呈现的视图控制器(由VCA提供)
TC =执行自定义动画的自定义转换控制器对象.
符合" UIViewControllerAnimatedTransitioning "的NSObject子类.
将在TD内实例化.
TD =为系统提供转换控制器的自定义转换委托对象.符合" UIViewControllerTransitioningDelegate "的NSObject子类
self = VCA的一个实例
myModalViewController =是self的强大属性
self.myModalViewController = [[VCB alloc] init];
[self.myModalViewController setModalPresentationStyle: UIModalPresentationCustom];
[self.myModalViewController setTransitioningDelegate: [[TD alloc] init]];
[self presentViewController: self.myModalViewController
animated:YES
completion:NULL];
Run Code Online (Sandbox Code Playgroud)
self = VCA的一个实例
myModalViewController =前面提到的VCB的模态呈现实例
[self dismissViewControllerAnimated:YES
completion:^{
[self.myModalViewController setTransitioningDelegate: nil]; // DO THIS!!!!
self.myModalViewController = nil;
}];
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助.它确实对我有用.
| 归档时间: |
|
| 查看次数: |
4333 次 |
| 最近记录: |