国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Swift - Swift中的訪問控制和protected

Swift中的訪問控制和protected

2020-12-20 17:08Swift教程網 Swift

這篇文章主要介紹了Swift中的訪問控制和protected,本文主要講解為什么Swift沒有類似protected的選項,需要的朋友可以參考下

原文再續,書折第一回。

很多其他編程語言都有一種”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的訪問控制等級和繼承無關,是單維度、非常清楚明了的。我們認為這樣的模式更簡潔,同時滿足了最主要的需求:將一個類、或一個框架的實現細節隔離保護起來。這可能和你以前用過的不同,但我們鼓勵你試試看。

延伸 · 閱讀

精彩推薦
  • SwiftSwift的74個常用內置函數介紹

    Swift的74個常用內置函數介紹

    這篇文章主要介紹了Swift的74個常用內置函數介紹,這篇文章列舉出了所有的Swift庫函數,內置函數是指無需引入任何模塊即可以直接使用的函數,需要的朋友可...

    Swift教程網5802020-12-19
  • Swiftswift where與匹配模式的實例詳解

    swift where與匹配模式的實例詳解

    這篇文章主要介紹了swift where與匹配模式的實例詳解的相關資料,這里附有簡單的示例代碼,講的比較清楚,需要的朋友可以參考下...

    追到夢的魔術師14382021-01-06
  • SwiftSwift使用CollectionView實現廣告欄滑動效果

    Swift使用CollectionView實現廣告欄滑動效果

    這篇文章主要為大家詳細介紹了Swift使用CollectionView實現廣告欄滑動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Stevin的技術博客12372021-01-13
  • SwiftSwift中轉義閉包示例詳解

    Swift中轉義閉包示例詳解

    在Swift 中的閉包類似于結構塊,并可以在任何地方調用,下面這篇文章主要給大家介紹了關于Swift中轉義閉包的相關資料,需要的朋友可以參考下...

    小小小_小朋友11412021-12-26
  • SwiftSwift能代替Objective-C嗎?

    Swift能代替Objective-C嗎?

    這是我在網上上看到的答案,復制粘貼過來和大家分享一下,因為我和很多人一樣很關心Swift的出現對Mac開發的影響和對Objective-C的影響。...

    Swift教程網4412020-12-16
  • SwiftSwift實現多個TableView側滑與切換效果

    Swift實現多個TableView側滑與切換效果

    這篇文章主要為大家詳細介紹了Swift實現多個TableView側滑與切換效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    乞力馬扎羅的雪雪5822021-01-08
  • Swiftmac git xcrun error active developer path 錯誤

    mac git xcrun error active developer path 錯誤

    本文主要是講訴了如何解決在mac下使用git;xcode4.6的環境時,出現了錯誤(mac git xcrun error active developer path)的解決辦法,希望對大家有所幫助...

    Swift教程網2232020-12-16
  • SwiftSwift教程之基礎數據類型詳解

    Swift教程之基礎數據類型詳解

    這篇文章主要介紹了Swift教程之基礎數據類型詳解,本文詳細講解了Swift中的基本數據類型和基本語法,例如常量和變量、注釋、分號、整數、數值類型轉換等...

    Swift教程網5162020-12-18
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: av在线一区二区三区 | 伊人www22综合色 | 日韩成人av在线 | 粉嫩视频在线观看 | 日韩在线中文字幕 | 午夜影院啊啊啊 | 99国产精品99久久久久久 | 国产高清在线精品一区二区三区 | 精品欧美乱码久久久久久1区2区 | 97理论片 | 午夜av免费| 九九热在线视频观看这里只有精品 | 日韩av成人在线观看 | 日韩国产精品一区二区三区 | 毛片国产| 97精品一区二区三区 | 亚洲精品综合 | 伊人网在线视频免费观看 | 午夜精品久久久久久久久 | 无毒黄网 | 久久成人国产 | 亚洲一区二区在线 | 国产精品一区二区三区四区五区 | 久久久国产精品视频 | 国产视频三区 | 精品人成 | 中文字幕第七页 | 色视频在线免费观看 | 免费在线成人 | 人人人人澡人人爽人人澡 | 中文字幕天天操 | 国产亚洲欧美一区 | 日本一区二区视频在线播放 | 中文在线a在线 | 国产精品久久久久久久久久久久久久 | 亚洲一区中文字幕 | 国产黄色小视频 | 91久久精品国产91久久 | 色多多导航| 中文字幕亚洲专区 | 国产精品精 |