<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 訪問控制和protected ----------------- > 翻譯:[老碼團隊翻譯組-Arya](http://weibo.com/littlekok/) > 校對:[老碼團隊翻譯組-Jame](http://weibo.com/u/5241713117) 原文再續,書折第一回。 很多其他編程語言都有一種”protected“設定,可以限制某些類方法只能被它的子類所使用。 Swift支持了訪問控制后,大家給我們的反饋都很不錯。而有的開發者問我們:“為什么Swift沒有類似protected的選項?” **當我們在設計Swift訪問控制的不同等級時,我們認為有兩種主要場景:** * 在一個APP里:隱藏某個類的私密細節。 * 在一個開源框架里:不讓導入這個框架的APP,隨便接觸框架的內部實現細節。 上面的兩種常見情況,對應著private和internal這兩個等級。 而protected相當于把訪問控制和繼承特性混在一起,把訪問控制的等級設定增加了一個維度,使之復雜化。即使設定了protected,子類還是可以通過新的公開方法、新的屬性來接觸到所謂“protected”了的API。另一方面,我們可以在各種地方重寫一個方法,所謂的保護卻沒有提供優化機制。這種設定往往在做不必要的限制 一 protected允許了子類,但又禁止所有其他別的類(包括那些幫助子類實現某些功能的類)接觸父類的成員。 有的開發者指出,apple的框架有時候也會把給子類用的API分隔出來。這時候protected不就有用了嗎?我們研究后發現,這些方法一般屬于下面兩種情況:一是這些方法對子類以外的類沒啥用,所以不需要嚴格保護(例如上面說的協助實現某些功能的類)。二是這些方法就是設計出來被重寫,而不是直接用的。舉個例子,`drawRect(_:) `就是在UIKit基礎上使用的方法,但它不能在UIKit以外應用。 除此之外,如果有了protected,它要怎么樣和extension相互作用呢?一個類的extension能接觸它的protected成員嗎?一個子類的extension可以接觸父類的protected成員嗎?extension聲明的位置對訪問控制等級有沒有影響呢?(復雜到要哭了是不是?) 對訪問控制的設計,也依循了Objective-C開發者(包括apple內外的)的常規做法。Objective-C方法和屬性一般在.h頭文件里聲明,但也可以寫在.m實現文件里。假如有一個公開的類,想把里面某些部分設為只有框架內可以獲取時,開發者一般會創建另一個頭文件給內部使用。以上三種訪問級別,就對應了Swift里面的public,private和internal。 Swift的訪問控制等級和繼承無關,是單維度、非常清楚明了的。我們認為這樣的模式更簡潔,同時滿足了最主要的需求:將一個類、或一個框架的實現細節隔離保護起來。這可能和你以前用過的不同,但我們鼓勵你試試看。 ----------------- 本章節不是老碼的原創,是老碼認真的閱讀了蘋果的官方博客,自己的練習總結,如果小伙伴們費了吃奶的勁還是看不懂,請找度娘谷歌。還是看不懂?請到老碼[官方微博](http://weibo.com/u/5241713117)咆哮。 ##### 本文由翻譯自Apple Swift Blog :[Access Control and Protected](原文地址:https://developer.apple.com/swift/blog/?id=11)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看