一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語言 - Swift - Swift中的Access Control權(quán)限控制介紹

Swift中的Access Control權(quán)限控制介紹

2020-12-20 17:10Swift教程網(wǎng) Swift

這篇文章主要介紹了Swift中的Access Control權(quán)限控制介紹,本文講解了private、internal、public三個關(guān)鍵字的使用,需要的朋友可以參考下

如果您之前沒有接觸過權(quán)限控制,先來聽一個小故事:

小明是五道口工業(yè)學(xué)院的一個大一新生,最近他有點煩惱,因為同屋經(jīng)常用他的熱水壺,好像那是自己家的一樣,可是礙于同學(xué)情面,又不好意思說。直到有一天,他和學(xué)姐小K吐槽。

學(xué)姐聽了之后,說:大學(xué)集體生活里面,大部分東西都是默認(rèn)室友可以共用的。如果你不想別人拿,我可以幫你做封印,只要打上private標(biāo)記,它們就看不到你的東西,更加用不了你的東西了。

小明說哇靠學(xué)姐你還會妖法......

Swift語言從Xcode 6 beta 5版本起,加入了對權(quán)限控制(Access Control)的支持。其實權(quán)限控制和小明的物品一樣,你可以設(shè)定水壺是只有自己能用,還是只有宿舍里的人能用,還是全校都可以用。

從此以后,你可以好像神盾局局長一樣,完全掌控自己的代碼塊的”保密級別“,哪些是只能在本文件引用,哪些能用在整個項目里,你還可以發(fā)揮大愛精神,把它開源成只要導(dǎo)入你的框架,大家都可以使用的API。
這三種權(quán)限分別是:

#####private 私有的

在哪里寫的,就在哪里用。無論是類、變量、常量還是函數(shù),一旦被標(biāo)記為私有的,就只能在定義他們的源文件里使用,不能為別的文件所用。

#####internal 內(nèi)部的

標(biāo)記為internal的代碼塊,在整個應(yīng)用(App bundle)或者框架(framework)的范圍內(nèi)都是可以訪問的。

#####public 公開的

標(biāo)記為public的代碼塊一般用來建立API,這是最開放的權(quán)限,使得任何人只要導(dǎo)入這個模塊,都可以訪問使用。

如果要把所有的愛加上一個期限,噢不,是給所有的代碼塊都標(biāo)記上權(quán)限,不累死才怪。還好swift里面所有代碼實體的默認(rèn)權(quán)限,都是最常用的internal。所以當(dāng)你開發(fā)自己的App時,可能完全不用管權(quán)限控制的事情。

但當(dāng)你需要寫一個公開API的時候,就必須對里面的代碼塊進(jìn)行“隱身對其可見”的public標(biāo)記,要么其他人是用不到的。

Private(私有級別)的權(quán)限最嚴(yán)格,它可以用來隱藏某些功能的細(xì)節(jié)實現(xiàn)方式。合理構(gòu)筑你的代碼,你就可以安全地使用extension和高級功能,又不把它們暴露給項目內(nèi)的其他文件。

除了可以給整個聲明設(shè)權(quán)限,Swift還允許大家在需要的時候,把某個屬性(property)的取值權(quán)限比賦值權(quán)限設(shè)得更加開放。

#####舉個例子:

復(fù)制代碼 代碼如下:


public class ListItem {

 

    // ListItem這個類,有兩個公開的屬性
    public var text: String
    public var isComplete: Bool

    // 下面的代碼表示把變量UUID的賦值權(quán)限設(shè)為private,對整個app可讀,但值只能在本文件里寫入
    private(set) var UUID: NSUUID

    public init(text: String, completed: Bool, UUID: NSUUID) {
        self.text = text
        self.isComplete = completed
        self.UUID = UUID
    }

    // 這段沒有特別標(biāo)記權(quán)限,因此屬于默認(rèn)的internal級別。在框架目標(biāo)內(nèi)可用,但對于其他目標(biāo)不可用
    func refreshIdentity() {
        self.UUID = NSUUID()
    }

    public override func isEqual(object: AnyObject?) -> Bool {
        if let item = object as? ListItem {
            return self.UUID == item.UUID
        }
        return false
        }
    }

 

當(dāng)我們使用Objective-C和Swift混合開發(fā)時,需要注意:

●如果你在寫的是一個應(yīng)用,Xcode會生成一個頭文件來保證兩者的可互訪性,而這個生成的頭文件會包含public和internal級別的聲明。
●如果你的最終產(chǎn)品是一個Swift框架,頭文件里只會出現(xiàn)標(biāo)記為public級別的聲明。(因為框架的頭文件,屬于公開的Objective-C接口的一部分,只有public部分對Objective-C可用。)

雖然Swift不推薦大家傳播和使用第三方的框架,但對于建立和分享源文件形式的框架是支持的。對于需要寫框架,方便應(yīng)用與多個項目的開發(fā)者來說,要記得把API標(biāo)記為public級別。

如果您想了解更多關(guān)于權(quán)限控制的內(nèi)容,可以查看蘋果官方最新的《The Swift Language》和《Using Swift with Cocoa and Objective-C》指南,
這兩本指南在iBooks里面可以下載更新喔。

延伸 · 閱讀

精彩推薦
  • SwiftSwift能代替Objective-C嗎?

    Swift能代替Objective-C嗎?

    這是我在網(wǎng)上上看到的答案,復(fù)制粘貼過來和大家分享一下,因為我和很多人一樣很關(guān)心Swift的出現(xiàn)對Mac開發(fā)的影響和對Objective-C的影響。...

    Swift教程網(wǎng)4412020-12-16
  • SwiftSwift教程之基礎(chǔ)數(shù)據(jù)類型詳解

    Swift教程之基礎(chǔ)數(shù)據(jù)類型詳解

    這篇文章主要介紹了Swift教程之基礎(chǔ)數(shù)據(jù)類型詳解,本文詳細(xì)講解了Swift中的基本數(shù)據(jù)類型和基本語法,例如常量和變量、注釋、分號、整數(shù)、數(shù)值類型轉(zhuǎn)換等...

    Swift教程網(wǎng)5162020-12-18
  • SwiftSwift中轉(zhuǎn)義閉包示例詳解

    Swift中轉(zhuǎn)義閉包示例詳解

    在Swift 中的閉包類似于結(jié)構(gòu)塊,并可以在任何地方調(diào)用,下面這篇文章主要給大家介紹了關(guān)于Swift中轉(zhuǎn)義閉包的相關(guān)資料,需要的朋友可以參考下...

    小小小_小朋友11412021-12-26
  • Swiftswift where與匹配模式的實例詳解

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

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

    追到夢的魔術(shù)師14382021-01-06
  • SwiftSwift的74個常用內(nèi)置函數(shù)介紹

    Swift的74個常用內(nèi)置函數(shù)介紹

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

    Swift教程網(wǎng)5802020-12-19
  • SwiftSwift使用CollectionView實現(xiàn)廣告欄滑動效果

    Swift使用CollectionView實現(xiàn)廣告欄滑動效果

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

    Stevin的技術(shù)博客12372021-01-13
  • SwiftSwift實現(xiàn)多個TableView側(cè)滑與切換效果

    Swift實現(xiàn)多個TableView側(cè)滑與切換效果

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

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

    mac git xcrun error active developer path 錯誤

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

    Swift教程網(wǎng)2232020-12-16
主站蜘蛛池模板: 亚洲不卡高清免v无码屋 | 亚洲日韩中文字幕一区 | 亚洲国产一区二区三区a毛片 | 3d动漫被吸乳羞羞 | 精品国产免费久久久久久 | 国产伦精品一区二区三区免 | 性欧美金发洋妞xxxxbbbb | 国产精品高清一区二区三区不卡 | 80日本xxxxxxxxx96 7个黑人玩北条麻妃 | 男人影院天堂网址 | 久久久久久久久人体 | 污到你怀疑人生 | 国产一区国产二区国产三区 | 四虎免费看黄 | a片毛片在线免费看 | 免费视频 | 国产精品拍拍拍福利在线观看 | 99在线在线视频免费视频观看 | 亚洲网视频 | 精品视频免费在线 | 91这里只有精品 | 国产成人亚洲综合a∨婷婷 国产成人亚洲精品乱码在线观看 | 国产东北三老头伦一肥婆 | 国产福利视频一区二区微拍 | 亚洲欧美国产另类 | 国产资源一区 | 国产农村乱子伦精品视频 | xxxx性欧美极品另类 | 久草草在线视视频 | 毛片视频网站在线观看 | 天堂成人在线视频 | 日本一卡二卡3卡四卡网站精品 | 亚洲一区二区三区久久精品 | 狠狠香蕉 | 精品国产无限资源免费观看 | 成人网视频免费播放 | 1024毛片 | 日韩国产成人精品视频人 | 99色在线播放 | avtt在线 | 黑人巨大精品战中国美女 |