2012-10-16 43 views
0

我正在开发一个iPhone应用程序,这是基于页面的。现在,只需点击一个按钮,即可翻到随机页面。在翻页时,首先调用新页面的viewDidAppear,&然后调用当前页面的viewDidDisappear(这是预期的行为)。新页面很快出现(我在viewDidAppear中放置了一个[NSDate日期]),但当前页面的'viewDidDisappear'在新页面的viewDidAppear之后的平均30到40秒之后被调用(&没有其他方法被调用;我把NSLog放在每个方法中,看看是否有其他东西被调用)!所以它是这样的: 1.新的页面的viewDidAppear被称为&结束(我检查这与打印开始&结束时间的viewDidAppear)几乎立即 2.什么都发生了近30至40秒('后' viewDidAppear of the new page'ends') 3.然后,调用当前页面的viewDidDisappear! (&我没有处理viewDidDisappear/viewWillDisappear;我只是打印当前时间)UIPageViewController - 翻到随机页面需要很多时间

为什么在这之间有这么长的停顿?

这是我的相关代码段: (环境:的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]); 
} 
+2

使用工具和时间事件探查器查看40秒内执行的操作。 – Jesper

+0

+1谢谢!让我检查一下;我应该承认我没有使用这些工具! – Jean

回答

0

你不能打电话给超级viewWillAppear/viewWillDisappear等坏主意。