iOS 創(chuàng)建VC時(shí)賦值大坑

需求是創(chuàng)建一個(gè)VC,創(chuàng)建后賦值參數(shù),然后VC內(nèi)部方法將利用此VC初始化時(shí)被賦值的全局變量作為參數(shù)進(jìn)行網(wǎng)絡(luò)請(qǐng)求,初始化如下:

1- (FlightDomesticFreeViewController *)freeDomesticFlightViewController
2{
3  if (_freeDomesticFlightViewController) {
4       return _freeDomesticFlightViewController;
5    }
6   _freeDomesticFlightViewController = [[TNBoss3FlightDomesticFreeViewController alloc] init];
7   _freeDomesticFlightViewController.adultNum = self.adultNum;
8   _freeDomesticFlightViewController.childNum = self.childNum;
9   _freeDomesticFlightViewController.currentSeqNum = 1;
10  _freeDomesticFlightViewController.baseSinglePriceArray = self.baseSinglePriceArray;
11  _freeDomesticFlightViewController.basePackagePrice = self.basePackagePrice;
12   _freeDomesticFlightViewController.productInfo = self.freeFlightInfoDict[PRODUCT_INFO];
13   _freeDomesticFlightViewController.selectedFlights = self.freeFlightInfoDict[SELECT_FLIGHT];
14    _freeDomesticFlightViewController.departureCityCode = self.freeFlightInfoDict[DEPARTURE_CITY_CODE];
15   _freeDomesticFlightViewController.backCityCode = self.freeFlightInfoDict[BACK_CITY_CODE];
16   _freeDomesticFlightViewController.queryFlight = self.queryFlight;
17   _freeDomesticFlightViewController.bookCity = self.bookCity;
18   _freeDomesticFlightViewController.delegate = self;
19   _freeDomesticFlightViewController.isChangeOrder = self.isChangeOrder;
20   _freeDomesticFlightViewController.view.frame = self.freeContentView.bounds;
21   _freeDomesticFlightViewController.journeyId = self.baseInfo.journeyId;
22   [_freeContentView addSubview:_freeDomesticFlightViewController.view];
    
23   [self addChildViewController:_freeDomesticFlightViewController];
24    return _freeDomesticFlightViewController;
}

然后測(cè)試告訴我入?yún)](méi)有journeyId這個(gè)字段,后來(lái)經(jīng)過(guò)反復(fù)斷點(diǎn)調(diào)試,發(fā)現(xiàn)20行執(zhí)行完以后便會(huì)調(diào)入VC的內(nèi)部方法,進(jìn)行網(wǎng)絡(luò)請(qǐng)求,而此時(shí)21行journeyId還未賦值,所以導(dǎo)致入?yún)⒋俗侄螢榭铡T蚓褪且驗(yàn)?0行執(zhí)行后,VC的viewDidLoad會(huì)執(zhí)行,也就是開(kāi)始執(zhí)行VC的內(nèi)部方法,故這種初始化屬性方式不可在設(shè)置frame方法后,也就是將21行代碼放在20行之前,便可避免這種低級(jí)錯(cuò)誤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容