代码改变世界

iOS modal view的关闭和显示问题

2013-07-12 18:24  王妞  阅读(1243)  评论(0编辑  收藏  举报

今天遇到一个问题:

需要关闭当前modal view,再present另一个modal view。

如果这么写:

[self dismissModalViewControllerAnimated:NO];
[self.delegate showBorderDetectionView];
执行了第一句,再执行第二句的时候,self就变成僵尸了,就是self已经被ARC释放了。
 
有3个解决方法:
1. 延长self的生命:
CFRetain(CFBridgingRetain(self));
           [self dismissModalViewControllerAnimated:NO];
           [self.delegate showBorderDetectionView];
            CFRelease(CFBridgingRetain(self));
2. 用delegate,在外部,先关闭preveiw view,再present border view
[self.delegate closePreviewAndShowBorderDetectionView];
3. 把preview view的viewController设置成全局的。不是每次present的时候,都重新alloc。而是只在viewController为nil的时候才alloc.
经过考虑,preview view是个主要界面,我采用了第三种方法,把viewController设置成全局的。