我正在呈现一个视图控制器:
SCAAboutController2 *controller = [[SCAAboutController2 alloc] initWithNibName:nil bundle:nil]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller]; [self presentViewController:navController animated:YES completion:nil];
设备挂起3-4秒才能显示.我试图使用仪器来诊断这个问题,但是似乎大部分时间都是用在主 –
这是相同的配置文件,但是系统库不被隐藏:
这些消息都不能被我识别,所以我不知道如何开始调试我的性能问题.
我在其他地方阅读,我应该检查主代码是否在主线程上执行.但是,以下变化并没有改善:
dispatch_async(dispatch_get_main_queue(),^{ SCAAboutController2 *controller = [[SCAAboutController2 alloc] initWithNibName:nil bundle:nil]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller]; [self presentViewController:navController animated:YES completion:nil]; });
我很快就用完了如何进步的想法.我如何进一步调查和/或可能是缓慢介绍的根本原因?
编辑
一些令人困惑的发现:
>我已经删除了所提供的视图控制器中的所有代码.表现不受影响.
>我有另一个控制器,我通过不同的按钮从同一个地方出现.同样慢
>呈现控制器具有相当多的子视图和约束 – 甚至一些子视图控制器.删除填充这些代码的代码解决了这个问题.
>在呈现控制器的viewWilldisappear中没有添加任何内容.
编辑2
我发现这些问题围绕着我在主(提供)控制器中添加的一系列布局限制.具体来说,我循环访问一些子控制器(类型为teamController)并添加约束:
[self.browser addConstraint:[NSLayoutConstraint constraintWithItem:teamController.view attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.browser attribute:NSLayoutAttributeWidth multiplier:1 constant:0]];
只有10个儿童控制器.也奇怪的是:如果我使用以下代码,我没有这样的问题:
[self.browser.contentView addConstraint:[NSLayoutConstraint constraintWithItem:teamController.view attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:200]];
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。