簡體   English   中英

viewDidLoad和viewDidAppear之間的延遲

[英]Delay between viewDidLoad and viewDidAppear

所以當我遇到這個奇怪的bug(?)時,我正在XCode上做一些基本的事情。

這兩種方法之間有些延遲,我無法理解為什么 延遲時間

我認為與之相關的一些代碼。

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"viewDidLoad");
}

-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    NSLog(@"changing detail");
    [foodNameText setText:[food objectForKey:kTNFoodName]];
    [restaurantNameText setText: [food objectForKey:kTNRestaurantName]];
}

這並不是一個大問題,但是我認為這很奇怪,因為我的程序非常簡單,因此iOS應該沒有超時來計算任何內容。 任何想法為什么會發生這種情況?

ViewController事件按此順序運行...

- (void)viewDidLoad
所有對象都實例化,但是幾何體(框架等)尚未正確設置。

-(void)viewWillAppear:(BOOL)animated
現在幾何是正確的,視圖層次結構可以顯示了

在此適當運行過渡動畫

-(void)viewDidAppear:(BOOL)animated
動畫完成。 按幾何顯示層次結構。

因此,例如,如果您使用制作自定義過渡動畫對象,則動畫代碼將在viewWillAppear之后和viewDidAppear之前運行。

我剛剛運行了一些簡單的測試。

在此處輸入圖片說明

應用啟動到VC1

2015-01-28 17:47:42.659 TestViews[14335:2062491] viewDidLoad
2015-01-28 17:47:42.660 TestViews[14335:2062491] viewWillAppear
2015-01-28 17:47:42.706 TestViews[14335:2062491] viewDidAppear


   1ms didLoad    -> willAppear
  46ms willAppear -> didAppear

從VC1到VC2的動畫“顯示”序列。

2015-01-28 17:48:52.347 TestViews[14335:2062491] viewDidLoad
2015-01-28 17:48:52.347 TestViews[14335:2062491] viewWillAppear
2015-01-28 17:48:52.851 TestViews[14335:2062491] viewDidAppear

< 1ms didLoad     -> willAppear
504ms willAppear  -> didAppear

從VC1到VC2的PushViewController動畫化:否

2015-01-28 17:50:31.713 TestViews[14335:2062491] viewDidLoad
2015-01-28 17:50:31.713 TestViews[14335:2062491] viewWillAppear
2015-01-28 17:50:31.714 TestViews[14335:2062491] viewDidAppear

< 1ms didLoad    -> willAppear
  1ms willAppear -> didAppear

動畫時間在動畫師的控制下。 對於“ Show” segue,我想這是設計使然為0.5s

抱歉,無法真正將其格式化為評論...

您未考慮的時間被以下人員使用:

[super viewDidAppear:animated]; 

在此之前登錄...

關於正在執行的操作,可能是為視圖或某些內容加載數據...您將不得不四處查看是否可以了解其正在執行的操作...設置斷點並進入

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM