addSubview:方法非常慢

Pie*_*nan 4 iphone objective-c addsubview

我试图ViewController从另一个初始化.这是我第一次编写的代码ViewController:

MediasViewController.h

#import "MediasVideosViewController.h"

@interface MediasViewController : UIViewController <UIWebViewDelegate>
{
    NSArray*                    videosList; 
    MediasVideosViewController  *mediasVideosViewController;
}

@property (nonatomic, retain) NSArray*  videosList;
@property (nonatomic, retain) MediasVideosViewController*   mediasVideosViewController;
Run Code Online (Sandbox Code Playgroud)


MediasViewController.m:

if (self.mediasVideosViewController == nil)
{
    MediasVideosViewController* mediasVideos = [[MediasVideosViewController alloc] initWithNibName:@"MediasVideosView" bundle:nil];
    self.mediasVideosViewController = mediasVideos;
    self.mediasVideosViewController.videosList = self.videosList;
    [mediasVideos release];
}

NSDate *start = [NSDate date];
[mediasVideosViewController.view addSubview:nil];
NSLog(@"adding nil to mediasVideosViewController.view took %f seconds", [[NSDate date] timeIntervalSinceDate:start]);
Run Code Online (Sandbox Code Playgroud)


控台结果:

将nil添加到mediasVideosViewController.view需要4.261444秒

真的吗?超过4s加nil mediasVideosController?它在1s和5s之间摇摆.

但如果我删除这一行:

self.mediasVideosViewController.videosList = self.videosList;
Run Code Online (Sandbox Code Playgroud)

从MediasViewController.m,我得到一个非常短的加载时间,如:

添加nil到mediasVideosViewController.view花了0.007613秒

它让我疯狂...

有没有人有办法解决吗?

hun*_*eth 5

当你调用mediasVideosViewController.view时,你基本上是第一次调用loadView.您不只是添加子视图,而是使用该调用创建整个视图.

据推测,当您设置视频列表时,您正在为loadView方法做更多的工作.这将导致您看到的行为.

简而言之,请查看loadView方法以获取线索.

编辑:我注意到您正在从NIB文件加载视图控制器,在这种情况下,您要检查viewDidLoad.