4

別のものからa を初期化しようとしています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 秒かかりました

真剣に?nil を追加するには 4 秒以上mediasVideosController? 1秒から5秒の間で揺れます。

しかし、この行を削除すると:

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 に答える