[英]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.