国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS 開發中 NavigationController經常出現的問題原因分析

2019-10-21 18:52:04
字體:
來源:轉載
供稿:網友

情況一:

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

BUG:界面無反應

分析可能出錯的原因:

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

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

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

如果你sampleViewController用到了網絡異步請求,在initWithXXX的時候會去取數,那么你10有89會掛掉。

原因分析:大家網絡請求,經常如下:

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

恭喜你,這種情況不管是不是navigationController為空,你程序極容易掛掉,原因就是因為網絡請求我們都會用異步方式來拉取數據,當數據回來之后,會回調到本類的XXXReceive:obj方法,但是如果界面退出了,數據才收到將如何?那就是不是空指針調用了,TwitterClient里紀錄的需要回調的內存地址上神馬情況都有可能是,回調。。杯具了

解決辦法:twitterClient做成成員,在析構的時候該咋收拾twitterClient的就咋收拾一下吧

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

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

原因分析:異步的問題,twitterClient已經取到數據,但是sampleViewController已經被釋放了,but dealloc根本沒來得及進來。。。

解決辦法,1:確保nav正確,2:盡量在界面viewDidLoad的時候網絡請求數據,在dispear的時候清理網絡。

情況二:

reason: 'Pushing a navigation controller is not supported'

報上面的錯誤,原因是:

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

將一個NavigationController再次push到NavigationController中時,報錯,出現了

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

應該是,NavigationController不支持push進來的對象是NavigationController吧。

修改方法是:將要進入的頁面不去繼承UINavigationController

情況三:

有時候項目里會有一種消息推送, 就是彈出提示用戶消息, 而消息中帶有鏈接, 當你點擊連接時不能跳轉,這種情況是因為你的self.navigationController = nil 造成的,因為你彈窗的那個控制器沒有用UINavigationController包裝

以上所述是小編給大家介紹的iOS 開發中 NavigationController經常出現的問題原因分析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿鲁科尔沁旗| 夏津县| 荥阳市| 布尔津县| 玉溪市| 中山市| 英德市| 霍州市| 纳雍县| 昌平区| 利川市| 五莲县| 增城市| 噶尔县| 凭祥市| 上思县| 菏泽市| 德庆县| 鄂伦春自治旗| 烟台市| 泰宁县| 察隅县| 沭阳县| 津市市| 江华| 阿城市| 铜川市| 库车县| 陇南市| 浑源县| 海盐县| 韶山市| 奉化市| 新密市| 甘南县| 黔西县| 永清县| 汝南县| 腾冲县| 垣曲县| 金溪县|