在我目前正在使用的應用程序中,有一種情況是我有一組數據的兩個屏幕:一個是列表,另一個是地圖。每個屏幕都有自己的視圖控制器。默認屏幕是列表視圖,所以視圖控制器首先加載。但是其他地圖屏幕視圖控制器也被加載和設置(因爲它封裝了列表屏幕視圖控制器使用的一些地理地圖相關數據),即使地圖屏幕還不可見。在UIViewController的視圖屬性訪問器中懶惰地實例化nib
但是,我不希望地圖屏幕視圖控制器的筆尖和視圖加載並初始化,直到用戶切換到該屏幕。
在地圖屏幕視圖控制器中覆蓋view
屬性訪問器是否有任何問題,如下面的代碼中所示,並且延遲加載/實例化nib? (在地圖屏幕視圖控制器的viewDidLoad
方法被調用之前,地圖屏幕即將被顯示之前view
屬性不被訪問。)我已經測試過這種方式運行良好,但我從來沒有見過這樣做。
- (UIView *)view {
if (!_view) {
UINib *nib = [UINib nibWithNibName:@"MyNibName" bundle:nil];
[nib instantiateWithOwner:self options:nil];
}
return _view;
}