我正在尝试从另一个初始化一个 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]);
控制台结果:
adding nil to mediasVideosViewController.view took 4.261444 seconds
是认真的吗?将 nil 添加到 mediasVideosController
超过 4 秒?它在 1 秒和 5 秒之间摆动。
但是如果我删除这一行:
self.mediasVideosViewController.videosList = self.videosList;
在 MediasViewController.m 中,我的加载时间真的很短,例如:
adding nil to mediasVideosViewController.view took 0.007613 seconds
这让我发疯...
有没有人有解决办法?
最佳答案
当您调用 mediasVideosViewController.view 时,您基本上是第一次调用 loadView。您不只是添加 subview ,而是通过该调用创建整个 View 。
据推测,当您设置视频列表时,您会给 loadView 方法做更多的工作。这将导致您看到的行为。
简而言之,检查您的 loadView 方法以获取线索。
编辑:我注意到您正在从 NIB 文件加载 View Controller ,在这种情况下您想要检查 viewDidLoad。
关于objective-c - addSubview:方法非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6493261/