【发布时间】:2013-01-05 22:47:32
【问题描述】:
在我名为MainViewController 的UIViewController 中,我引用了另一个名为SubViewController 的UIViewController。定义如下:
@class SubViewController;
@interface MainViewController : UIViewController <UIScrollViewDelegate> {
SubViewController * _subViewController;
}
在我的MainViewController 的initWithNibName:bundle: 方法中,我初始化我的SubViewController 如下:
#pragma mark - Init
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil; {
if((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])){
_subViewController = [[SubViewController alloc] initWithNibName:@"SubViewController" bundle:nil[;
// Forces the view to load, in an attempt to speed up the adding of the subview.
UIView * view = _subViewController.view;
view.alpha = 1.0f;
}
return self;
}
确实调用了SubViewController 的viewDidLoad 方法,并且似乎所有内容都已加载,但是当我将SubViewController 添加为子视图时:
- (IBAction)showButtonPressed:(UIButton *)aButton; {
[self.view addSubview:_subViewController.view];
}
应用程序慢了几秒钟,然后添加了子视图,一切都很好。奇怪的是,当我删除子视图并尝试重新添加它时,没有延迟!
我认为问题是加载问题,但我找不到任何有关如何解决此问题的文档。
谁能解释一下是什么导致了这个速度变慢?谢谢!
【问题讨论】:
-
几秒钟是真的很长的时间。您可能希望使用 Instruments 来确定发生了什么,而不是只查看视图加载。
-
我同意,这是 真的很长一段时间。仪器可悲地告诉我什么。有什么特别要找的吗?
-
在仪器上,运行时间分析器,启动应用程序,您应该会看到一个峰值。停止它,然后在下面的区域中,继续单击左侧毫秒数最高的三角形。最终你应该得到一些可以理解的东西。
标签: iphone ios uiview load subview