4

我正在尝试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;


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]);


控制台结果:

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

严重地?超过 4s 加 nil mediasVideosController?它在 1s 和 5s 之间波动。

但如果我删除这一行:

self.mediasVideosViewController.videosList = self.videosList;

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

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

它让我疯狂...

有没有人有办法解决吗?

4

1 回答 1

5

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

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

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

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

于 2011-06-27T13:17:11.363 回答