【问题标题】:UIPageViewController - flip to random page takes lot of timeUIPageViewController - 翻转到随机页面需要很多时间
【发布时间】:2012-10-16 09:44:11
【问题描述】:

我正在开发一个基于页面的 iPhone 应用程序。现在,点击一个按钮,我就翻到了一个随机页面。在翻转时,首先调用新页面的 viewDidAppear,然后调用当前页面的 viewDidDisappear(这是预期行为)。新页面出现很快(我在 viewDidAppear 中打印了 [NSDate date]),但平均在新页面的 viewDidAppear 后 30 到 40 秒后调用当前页面的“viewDidDisappear”(&中间没有调用其他方法;我将 NSLog 放在每个方法中,看看是否调用了其他方法)!所以它是这样的: 1. 新页面的 viewDidAppear 几乎立即被调用并结束(我通过打印 viewDidAppear 的开始和结束时间检查了这一点) 2. 近 30 到 40 秒内没有任何事情发生(新页面的“after”viewDidAppear 为“ends”) 3.然后,调用当前页面的viewDidDisappear! (&我在 viewDidDisappear / viewWillDisappear 中没有处理;我只是打印当前时间)

为什么中间会有这么长时间的停顿?

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

【问题讨论】:

  • 使用 Instruments 和 Time Profiler 查看这 40 秒内执行的操作。
  • +1 谢谢!让我检查一下;我应该承认我没有使用过这些工具!

标签: iphone ios cocoa-touch


【解决方案1】:

您未能在 viewWillAppear / viewWillDisappear 等中调用 super。这是个坏主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 2018-05-21
    • 1970-01-01
    相关资源
    最近更新 更多