最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift中的訪問控制和protected

 更新時(shí)間:2015年05月25日 11:27:30   投稿:junjie  
這篇文章主要介紹了Swift中的訪問控制和protected,本文主要講解為什么Swift沒有類似protected的選項(xiàng),需要的朋友可以參考下

原文再續(xù),書折第一回。

很多其他編程語(yǔ)言都有一種”protected“設(shè)定,可以限制某些類方法只能被它的子類所使用。

Swift支持了訪問控制后,大家給我們的反饋都很不錯(cuò)。而有的開發(fā)者問我們:“為什么Swift沒有類似protected的選項(xiàng)?”

當(dāng)我們?cè)谠O(shè)計(jì)Swift訪問控制的不同等級(jí)時(shí),我們認(rèn)為有兩種主要場(chǎng)景:

●在一個(gè)APP里:隱藏某個(gè)類的私密細(xì)節(jié)。
●在一個(gè)開源框架里:不讓導(dǎo)入這個(gè)框架的APP,隨便接觸框架的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。

上面的兩種常見情況,對(duì)應(yīng)著private和internal這兩個(gè)等級(jí)。

而protected相當(dāng)于把訪問控制和繼承特性混在一起,把訪問控制的等級(jí)設(shè)定增加了一個(gè)維度,使之復(fù)雜化。即使設(shè)定了protected,子類還是可以通過新的公開方法、新的屬性來(lái)接觸到所謂“protected”了的API。另一方面,我們可以在各種地方重寫一個(gè)方法,所謂的保護(hù)卻沒有提供優(yōu)化機(jī)制。這種設(shè)定往往在做不必要的限制 一 protected允許了子類,但又禁止所有其他別的類(包括那些幫助子類實(shí)現(xiàn)某些功能的類)接觸父類的成員。

有的開發(fā)者指出,apple的框架有時(shí)候也會(huì)把給子類用的API分隔出來(lái)。這時(shí)候protected不就有用了嗎?我們研究后發(fā)現(xiàn),這些方法一般屬于下面兩種情況:一是這些方法對(duì)子類以外的類沒啥用,所以不需要嚴(yán)格保護(hù)(例如上面說的協(xié)助實(shí)現(xiàn)某些功能的類)。二是這些方法就是設(shè)計(jì)出來(lái)被重寫,而不是直接用的。舉個(gè)例子,drawRect(_:)就是在UIKit基礎(chǔ)上使用的方法,但它不能在UIKit以外應(yīng)用。

除此之外,如果有了protected,它要怎么樣和extension相互作用呢?一個(gè)類的extension能接觸它的protected成員嗎?一個(gè)子類的extension可以接觸父類的protected成員嗎?extension聲明的位置對(duì)訪問控制等級(jí)有沒有影響呢?(復(fù)雜到要哭了是不是?)

對(duì)訪問控制的設(shè)計(jì),也依循了Objective-C開發(fā)者(包括apple內(nèi)外的)的常規(guī)做法。Objective-C方法和屬性一般在.h頭文件里聲明,但也可以寫在.m實(shí)現(xiàn)文件里。假如有一個(gè)公開的類,想把里面某些部分設(shè)為只有框架內(nèi)可以獲取時(shí),開發(fā)者一般會(huì)創(chuàng)建另一個(gè)頭文件給內(nèi)部使用。以上三種訪問級(jí)別,就對(duì)應(yīng)了Swift里面的public,private和internal。

Swift的訪問控制等級(jí)和繼承無(wú)關(guān),是單維度、非常清楚明了的。我們認(rèn)為這樣的模式更簡(jiǎn)潔,同時(shí)滿足了最主要的需求:將一個(gè)類、或一個(gè)框架的實(shí)現(xiàn)細(xì)節(jié)隔離保護(hù)起來(lái)。這可能和你以前用過的不同,但我們鼓勵(lì)你試試看。

相關(guān)文章

  • swift在IOS應(yīng)用圖標(biāo)上添加提醒個(gè)數(shù)的方法

    swift在IOS應(yīng)用圖標(biāo)上添加提醒個(gè)數(shù)的方法

    本文是通過swift語(yǔ)言實(shí)現(xiàn)在應(yīng)用圖標(biāo)右上角添加消息個(gè)數(shù)提醒的功能,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧
    2016-08-08
  • Swift3.0 GCD定時(shí)器的使用DEMO

    Swift3.0 GCD定時(shí)器的使用DEMO

    這篇文章主要介紹了Swift3.0 GCD定時(shí)器的使用,實(shí)現(xiàn)倒計(jì)時(shí),UIDatePicker的使用, 仿寫一個(gè)活動(dòng)倒計(jì)時(shí)的DEMO,需要的朋友可以參考下
    2017-02-02
  • 詳解Swift?中的幻象類型

    詳解Swift?中的幻象類型

    讓我們來(lái)看看一種技術(shù),它可以讓我們利用?Swift?的類型系統(tǒng)在編譯時(shí)執(zhí)行更多種類的數(shù)據(jù)驗(yàn)證消除更多潛在的歧義來(lái)源,并幫助我們?cè)谡麄€(gè)代碼庫(kù)中保持類型安全,通過使用幻象類型(phantom?types),對(duì)Swift?幻象類型相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-05-05
  • Swift 3中使用FMDB遇到的問題與解決方法

    Swift 3中使用FMDB遇到的問題與解決方法

    相信大家都熟悉OC使用FMDB第三方庫(kù),進(jìn)行數(shù)據(jù)庫(kù)操作,增、刪、改、查,但最近在Swift 3中使用FMDB遇到了一些問題,下面這篇文章主要給大家介紹了關(guān)于在Swift 3中使用FMDB遇到的問題與解決方法,需要的朋友可以參考下。
    2017-07-07
  • Swift利用CoreData實(shí)現(xiàn)一個(gè)上班簽到的小工具

    Swift利用CoreData實(shí)現(xiàn)一個(gè)上班簽到的小工具

    這篇文章主要給大家介紹了關(guān)于Swift利用CoreData實(shí)現(xiàn)一個(gè)上班簽到小工具的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • Swift中圖片資源使用流程的優(yōu)化方法詳解

    Swift中圖片資源使用流程的優(yōu)化方法詳解

    這篇文章主要給大家介紹了關(guān)于Swift中圖片資源使用流程的優(yōu)化方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • Swift類和對(duì)象的底層探索分析

    Swift類和對(duì)象的底層探索分析

    這篇文章主要為大家介紹了Swift類和對(duì)象的底層探索分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Swift下使用UICollectionView 實(shí)現(xiàn)長(zhǎng)按拖拽功能

    Swift下使用UICollectionView 實(shí)現(xiàn)長(zhǎng)按拖拽功能

    拖拽排序是新聞?lì)惖腁pp可以說是必有的交互設(shè)計(jì),如今日頭條,網(wǎng)易新聞等。這篇文章主要介紹了Swift下使用UICollectionView 長(zhǎng)按拖拽功能,需要的朋友可以參考下
    2017-03-03
  • 詳解Swift的switch...case語(yǔ)句中break關(guān)鍵字的用法

    詳解Swift的switch...case語(yǔ)句中break關(guān)鍵字的用法

    這篇文章主要介紹了Swift的switch...case語(yǔ)句中break關(guān)鍵字的用法,是Swift入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-04-04
  • Swift 3.0基礎(chǔ)學(xué)習(xí)之閉包

    Swift 3.0基礎(chǔ)學(xué)習(xí)之閉包

    Swift引進(jìn)了閉包的概念,這個(gè)與object-c的block類似,使用過block的話都知道有多方便,所以開始學(xué)Swift,先要把閉包學(xué)會(huì),后面使用會(huì)很頻繁。下面這篇文章主要介紹了Swift 3.0基礎(chǔ)學(xué)習(xí)之閉包的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-03-03

最新評(píng)論

拜城县| 永吉县| 婺源县| 牟定县| 溆浦县| 龙江县| 肇庆市| 互助| 大关县| 淄博市| 略阳县| 卓资县| 山丹县| 磐安县| 赣州市| 沅江市| 普宁市| 惠水县| 忻城县| 武定县| 松溪县| 班玛县| 阿拉善右旗| 海伦市| 大同市| 惠州市| 铜山县| 通化县| 郴州市| 白河县| 简阳市| 东乡县| 永年县| 习水县| 浦江县| 永清县| 新邵县| 化德县| 荥阳市| 罗源县| 和静县|