<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      iOS 11 Xcode9開發 新特性學習 (警告篇)

      最新版本SDK優化了開發體驗,編譯過程會提供更多提示警告,建議你修改。這些功能也可以自主選擇用或者不用,當然,蘋果喜歡你用他推薦的東西。。。

      1 . @avalibale 語法,同步判斷當前iOS系統是否滿足需求。例如:

       if (@available(iOS 11, *)) { // >= 11
              DLog(@"XXX1");
          } else if (@available(iOS 10, *)) { //>= 10
              DLog(@"XXX2");
          } else { // < 10
              DLog(@"XXX3");
          }   

      (2)聲明或者引用一些api需要在指定iOS版本才起作用會有warning,這個時候 可以用1 去做判斷。參考代碼:

            

      1.2 如果是對方法的聲明 添加API_AVAILABLE(ios(11)) ,就不用再方法里面做系統版本判斷了,錯用會有警告提示。

      例如:

           

       (2)如果在類之前聲明 API_AVAILABLE(ios(11)) 就是對該類添加了系統版本約束。

            

           

         (3) 針對runtime 或者 c/c++ 方法中里面,也有對應判斷系統版本方法,相似 @avalibale 語法

                __builtin_available 去判斷

             

             對類的約束:

             

         (4)蘋果鼓勵你升級Xcode 使用最新sdk 和操作以上方法,但是也不妨礙回歸老版本sdk,這時候@available方法在

            編譯時候 ,會被忽略不做警告提示。

                 但個人認為,已經做版本判斷了的話,還是要注意業務邏輯的。這個功能也是可選的使用下圖。當然蘋果鼓勵你

            操作最新語法 去運用到項目中來。

                 

       

       

      2 .   analyze

      2.1  使用該分析功能 會幫你提示 類型錯誤提示。舉例參考2.2.1 NSNumber類型和數字類型比大小,這個會出問題 。 當 photoCount沒賦值就是nil 會返回 NO, 如果有值 都會返回YES。這可不是一個正常的比大小的邏輯 亂套了,要知道的是 類型使用錯誤通常的直接反應就是崩潰,這類問題還是很嚴重的。

          (1)錯誤類型比大小

          

        (2) analyze 提示出錯

          

         (3)修正錯誤

          

        (4) 這個這個也是選擇使用的方法參考下面圖片

          

      2.2  聲明單利,會遇到的問題

         (1)只能有一個實例

          

         (2)dispatch_once 使用謂詞 一定是靜態 或者全局來進行必要修飾 。

               

          解決使用錯誤 給的例 是使用 NSLock 同步鎖 。

          

          

          (3)資源競爭造成的死方式鎖,數據讀取或者存儲都不正常

      2.3 不要使用copy 修飾可變類型 比如可變數組可變字典等

          (1) 如下圖會出現什么問題??

           

          (2) 用copy修飾可變類型,會導致可變類型 變成普通類型,這樣可變數組變成不可變數組了,再動態添加元素,就會崩潰

               因為動態添加元素根本不是 NSArray 里面的方法。。。

           

         (3)analyze 幫助我們提示這種 應該修改的錯誤

           

           

        (4)還可以選擇 在編譯過程順便 analyze這個我真是 之前都是想起來analyze ,現在build 就可以,這樣更方便我們查找

          潛在問題。

       3 .

        (1)引用已經釋放的對象(野指針 崩潰)會 做提示。 下面代碼有什么問題?

           

           分析:enumerateKeysAndObjectsUsingBlock: 循環體相當于一個自動釋放內存池,用過即廢掉,

           所以外部再引用NSError要展示信息的話 一定會崩潰的發生野指針錯誤。

           

           

          (2)兩種解決方案

       

            a.

                

            b.

            

            詳細解釋: 取地址符號的error寫法是要滲透到方法里面可以被修改的變量對象。 這就說明,方法對error來說

            就是強引用,如果在方法里被銷毀,外邊不引用了還好,如果繼續引用error就會報野指針錯誤而崩潰。

            模擬銷毀不是在方法內置error為nil而是放到自動釋放內存池里面,自己也可以模擬出這種情況。這就進一步驗證了

            關于字典的快速遍歷的循環體是即時銷毀的。因此,如果需要繼續使用error一定要處理成強引用寫法。

            測試模擬:

           

           銷毀模擬 :

           

           (3) 舉例說類似C語言,如果聲明方法不指定類型雖然可以編譯通過,但是現在可以報警告,防止未來不明確調用

             會出問題:“not type safe” 類型不安全。

           

          改了警告說的 類型不安全問題,濫用錯誤引用就會報錯:

          

        (4)同理:閉包函數也是一樣的:

          

          改后,如果濫用就報錯

          

         (5)這個也是在build時候檢查, 也可以選擇使用該項檢查,參考配置

           

       

      4 . C++ 的開發體驗 優化與支持 略 (目前還沒這個經驗。。。)

          

        參考:

        (1)https://developer.apple.com/videos/play/wwdc2017/411/

             

      posted on 2017-06-28 15:06  ACM_Someone like you  閱讀(14359)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 亚洲中文字幕无码久久2017| 日本一区二区三区专线| 欧美成人aaa片一区国产精品| 国产剧情福利一区二区麻豆| 亚洲成人av综合一区| 国产精品久久久久久人妻精品动漫| 成人综合婷婷国产精品久久蜜臀| 国产精品乱人伦一区二区| 亚洲精品在线少妇内射| 成人亚欧欧美激情在线观看| 国产在线国偷精品产拍| 免费无码VA一区二区三区| 青阳县| 自拍偷在线精品自拍偷99| 无套内射视频囯产| 特级aaaaaaaaa毛片免费视频| 亚洲欧美另类激情综合区蜜芽| 九九热视频在线观看一区| 国产免费久久精品44| 综合欧美视频一区二区三区| 国产精品小仙女自拍视频| 欧美黑人添添高潮a片www| 国产成人av电影在线观看第一页| 久久99精品久久久久久青青| 成年美女黄网站色大片免费看| 东京热人妻无码一区二区av| 久久理论片午夜琪琪电影网| 国产一区二区波多野结衣| 曰批免费视频播放免费| 夜夜躁日日躁狠狠久久av| 精品亚洲精品日韩精品| japanese无码中文字幕| 东京热大乱系列无码| 亚洲综合日韩av在线| 欧美叉叉叉bbb网站| 日本熟妇乱一区二区三区| 国产精品免费视频不卡| 巴马| 人妻出轨av中文字幕| 91久久精品美女高潮不断| 亚洲人成网网址在线看|