我正在开发一个基于页面的 iPhone 应用程序。现在,点击一个按钮,我就翻到了一个随机页面。在翻转时,首先调用新页面的 viewDidAppear,然后调用当前页面的 viewDidDisappear(这是预期行为)。新页面出现很快(我在 viewDidAppear 中打印了 [NSDate date]),但平均在新页面的 viewDidAppear 后 30 到 40 秒后调用当前页面的“viewDidDisappear”(&中间没有调用其他方法;我将 NSLog 放在每个方法中,看看是否调用了其他方法)!所以它是这样的: 1. 新页面的 viewDidAppear 被调用并结束(我通过打印 viewDidAppear 的开始和结束时间检查了这一点) 2. 几乎 30 到 40 秒没有发生任何事情(“之后” 新页面的viewDidAppear 'ends') 3. 然后,调用当前页面的viewDidDisappear !(&我在 viewDidDisappear / viewWillDisappear 中没有处理;我只是打印当前时间)
为什么中间会有这么长时间的停顿?
这是我的相关代码片段:(环境:XCode 4.3,iOS 5.0,使用 iPad 进行测试)
变成随机页面的代码:
NSMutableArray *array = [[NSMutableArray alloc] init];
ViewController_EachPage *page = [self getPageAtIndex:randomPageNum];
if ((page != nil) && (page != NULL)) {
[array insertObject:page atIndex:0];
}
[self.viewCtrlrPages
setViewControllers:[NSArray arrayWithArray:array]
direction:UIPageViewControllerNavigationDirectionForward
animated:YES completion:nil];
viewDidAppear 方法
....
self.timer = [NSTimer scheduledTimerWithTimeInterval:10.0f
target:self selector:@selector(hideThem)
userInfo:nil repeats:NO];
[((com_AppDelegate *) [[UIApplication sharedApplication] delegate]).viewCtrlrCoverPage.viewCtrlrPages initializePage];
NSLog(@"EachPage.viewDidAppear at %@", [NSDate date]);
....
viewDidDisappear 方法
-(void) viewWillDisappear:(BOOL)animated {
NSLog(@"EachPage.viewWillDisappear");
[self.timer invalidate];
}
-(void) viewDidDisappear:(BOOL)animated {
NSLog(@"EachPage.viewDidDisappear at %@", [NSDate date]);
}