久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    由pushViewController說起可能出線的各種死法

     最初九月雪 2015-01-15
              做蘋果開發或者果粉對導航條這個東西應該都不陌生,這咚咚在小小的屏幕上通過一個簡單的View的隊列管理來做到手機界面的有條理管理,但是開發過程程序員可能碰到各種死法,下面分享一二。
              例子:
    MyViewController *sampleViewController = [[[MyViewController alloc] initWithXXX] autorelease];       

    [self.navigationController pushViewController: sampleViewController animated:true];

    [sampleViewController release];


    上面代碼通常在一個UITabViewController中,某一行選中后,切換到詳細內容,上面代碼比較簡單,先從他的死法說起。

    死法1:  objectc程序員菜鳥常放的毛病導致,上面代碼必死,為神馬呢?

    nav的push會導致引用計數的增加,界面會茍延殘喘一會,當popview的時候,最后一行release會把sampleViewController清0,接著就是autopool回收的的時候XXX了

         終結:為了避免內存泄露,alloc必對應release或者autorelease,但是必須11對應,同理

    用全局函數生成的類,你就不要release了,除非你retain(如果你要長期使用,retain是必須的),objectc的內存管理必須小心翼翼,否則。。。,我個人習慣,寧可掛掉也不能泄露,因為掛掉容易發現問題,泄露了又有幾個程序員用工具分析解決呢。


    開胃菜結束,開始正題:

    MyViewController *sampleViewController = [[[MyViewController alloc]initWithXXXautorelease];       

    [self.navigationController pushViewController: sampleViewController animated:true];

    死法2:界面無反應,或者把自己界面刷了一下。

          分析可能出線的原因:

    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的時候清理網絡。


    待續。。。。





      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 亚洲男人第一无码av网站| 四虎亚洲国产成人久久精品| 无码国产精品久久一区免费| 小污女小欲女导航| 欧美成人一区二区三区不卡| 亚洲AV色香蕉一区二区蜜桃小说| 午夜在线观看成人av| 亚洲人成中文字幕在线观看| 推油少妇久久99久久99久久| 亚洲图片自拍偷图区| 国产精品VA在线观看无码不卡 | 亚洲美免无码中文字幕在线| 18禁午夜宅男成年网站| 亚洲精品国产精品国自产观看| 亚洲乱理伦片在线观看中字| 日本不卡一区二区三区| 亚洲香蕉网久久综合影视| AV色欲无码人妻中文字幕| 天天做天天爱夜夜爽导航| 狠狠躁夜夜躁人人躁婷婷| 日本高清乱理伦片中文字幕| 国产精品无码不卡一区二区三区| 国产成人8X人网站视频| 亚洲美免无码中文字幕在线| 无码精品国产VA在线观看DVD | 日韩亚洲精品中文字幕| 99久久免费精品国产72精品九九| 高清无码爆乳潮喷在线观看| 波多野结AV衣东京热无码专区| 男女猛烈无遮挡免费视频APP| 一本色道久久东京热| 国产成人欧美日韩在线电影| 国产对白老熟女正在播放| 真人性囗交视频| 97人妻人人做人碰人人爽| 2019久久久高清日本道| 好爽毛片一区二区三区四| 影音先锋女人AA鲁色资源| 午夜性爽视频男人的天堂| 国产亚洲精品AA片在线爽| 国产精品区一区第一页|