欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS 開發(fā)中 NavigationController經(jīng)常出現(xiàn)的問題原因分析

 更新時(shí)間:2016年09月25日 15:50:32   作者:dylan_lwb_  
這篇文章主要介紹了iOS 開發(fā)中 NavigationController經(jīng)常出現(xiàn)的問題原因分析的相關(guān)資料,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下

情況一:

MyViewController *sampleViewController = [[[MyViewController alloc]initWithXXX] autorelease]; 
[self.navigationController pushViewController: sampleViewController animated:true];

BUG:界面無反應(yīng)

分析可能出錯的原因:

1:self.navigationController為nil,空指針執(zhí)行pushViewController直接跳過,接著sampleViewController會釋放掉,所以界面會無反應(yīng)。

self.navigationController為神馬會空呢?navigationController是UIViewController父類繼承來的屬性,不是隨便都能用的,除非你當(dāng)前viewController是被nav push進(jìn)來的,或者用xib/代碼做成navigationcontroller的root了,cocoa的代碼應(yīng)該是給賦值了。(題外話,我很多界面就是局部用了某個ViewController,這種情況該viewController的nav為空,如果要正確使用,可以從app取,可以自己賦值,可以整體界面取。。。想咋取都行)

2、self.navigationController為nil,界面掛了

如果你sampleViewController用到了網(wǎng)絡(luò)異步請求,在initWithXXX的時(shí)候會去取數(shù),那么你10有89會掛掉。

原因分析:大家網(wǎng)絡(luò)請求,經(jīng)常如下:

TwitterClient *twitterClient = [[TwitterClient alloc] initWithTarget:self action:@selector(XXXReceive:obj:)];
[twitterClient getXXX:param];

恭喜你,這種情況不管是不是navigationController為空,你程序極容易掛掉,原因就是因?yàn)榫W(wǎng)絡(luò)請求我們都會用異步方式來拉取數(shù)據(jù),當(dāng)數(shù)據(jù)回來之后,會回調(diào)到本類的XXXReceive:obj方法,但是如果界面退出了,數(shù)據(jù)才收到將如何?那就是不是空指針調(diào)用了,TwitterClient里紀(jì)錄的需要回調(diào)的內(nèi)存地址上神馬情況都有可能是,回調(diào)。。杯具了

解決辦法:twitterClient做成成員,在析構(gòu)的時(shí)候該咋收拾twitterClient的就咋收拾一下吧

3、self.navigationController為nil,界面掛了

和上文一樣twitterClient成員了,dealloc也清理了現(xiàn)場,還是會掛

原因分析:異步的問題,twitterClient已經(jīng)取到數(shù)據(jù),但是sampleViewController已經(jīng)被釋放了,but dealloc根本沒來得及進(jìn)來。。。

解決辦法,1:確保nav正確,2:盡量在界面viewDidLoad的時(shí)候網(wǎng)絡(luò)請求數(shù)據(jù),在dispear的時(shí)候清理網(wǎng)絡(luò)。

情況二:

reason: 'Pushing a navigation controller is not supported'

報(bào)上面的錯誤,原因是:

大家知道,可以將ViewController push到一個 NavigationController中。就像是入棧操作!

將一個NavigationController再次push到NavigationController中時(shí),報(bào)錯,出現(xiàn)了

reason: 'Pushing a navigation controller is not supported'的錯誤。

應(yīng)該是,NavigationController不支持push進(jìn)來的對象是NavigationController吧。

修改方法是:將要進(jìn)入的頁面不去繼承UINavigationController

情況三:

有時(shí)候項(xiàng)目里會有一種消息推送, 就是彈出提示用戶消息, 而消息中帶有鏈接, 當(dāng)你點(diǎn)擊連接時(shí)不能跳轉(zhuǎn),這種情況是因?yàn)槟愕膕elf.navigationController = nil 造成的,因?yàn)槟銖棿暗哪莻€控制器沒有用UINavigationController包裝

以上所述是小編給大家介紹的iOS 開發(fā)中 NavigationController經(jīng)常出現(xiàn)的問題原因分析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論