欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2015年05月25日 11:49:50   投稿:junjie  
這篇文章主要介紹了Swift中的Access Control權(quán)限控制介紹,本文講解了private、internal、public三個(gè)關(guān)鍵字的使用,需要的朋友可以參考下

如果您之前沒(méi)有接觸過(guò)權(quán)限控制,先來(lái)聽(tīng)一個(gè)小故事:

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

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

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

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

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

#####private 私有的

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

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

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

#####public 公開(kāi)的

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

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

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

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

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

#####舉個(gè)例子:

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

public class ListItem {

    // ListItem這個(gè)類(lèi),有兩個(gè)公開(kāi)的屬性
    public var text: String
    public var isComplete: Bool

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

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

    // 這段沒(méi)有特別標(biāo)記權(quán)限,因此屬于默認(rèn)的internal級(jí)別。在框架目標(biāo)內(nèi)可用,但對(duì)于其他目標(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混合開(kāi)發(fā)時(shí),需要注意:

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

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

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

相關(guān)文章

  • Swift超詳細(xì)講解指針

    Swift超詳細(xì)講解指針

    從傳統(tǒng)的C代碼和與之無(wú)縫配合的Objective-C代碼遷移到Swift并非小工程,我們的代碼庫(kù)肯定會(huì)時(shí)不時(shí)出現(xiàn)一些和C協(xié)作的地方,如果想要繼續(xù)使用那些C?API的話,了解一些基本的Swift指針操作和使用的知識(shí)會(huì)很有幫助。下面通過(guò)這篇文章一起來(lái)學(xué)習(xí)下吧。
    2022-08-08
  • Ubuntu 16.04上安裝 Swift 3.0及問(wèn)題解答

    Ubuntu 16.04上安裝 Swift 3.0及問(wèn)題解答

    本文給大家分享的是在Ubuntu系統(tǒng)中安裝 Swift 3.0的方法和步驟,以及安裝過(guò)程中有可能遇到的問(wèn)題的解答,這里推薦給小伙伴們,希望大家能夠喜歡
    2016-07-07
  • 淺談swift 4.0中private所發(fā)生的變化

    淺談swift 4.0中private所發(fā)生的變化

    Swift 4是蘋(píng)果計(jì)劃于2017年秋季推出的最新版本,其主要重點(diǎn)是提供與Swift 3代碼的源兼容性,并努力實(shí)現(xiàn)ABI穩(wěn)定性。下面這篇文章主要給大家介紹了關(guān)于swift 4.0中private所發(fā)生的一些變化,需要的朋友可以參考下。
    2017-12-12
  • Swift使用SnapKit模仿Kingfisher第三方擴(kuò)展優(yōu)化

    Swift使用SnapKit模仿Kingfisher第三方擴(kuò)展優(yōu)化

    這篇文章主要為大家介紹了Swift?SnapKit模仿Kingfisher第三方擴(kuò)展優(yōu)化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Swift3.0仿支付寶二維碼掃描效果

    Swift3.0仿支付寶二維碼掃描效果

    這篇文章主要為大家詳細(xì)介紹了Swift3.0仿支付寶二維碼掃描效果的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Swift利用指紋識(shí)別或面部識(shí)別為應(yīng)用添加私密保護(hù)功能

    Swift利用指紋識(shí)別或面部識(shí)別為應(yīng)用添加私密保護(hù)功能

    這篇文章主要給大家介紹了關(guān)于Swift利用指紋識(shí)別或面部識(shí)別為應(yīng)用添加私密保護(hù)功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用swift具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面隨著小編來(lái)一起看看吧
    2018-05-05
  • 超全面的Swift編碼規(guī)范(推薦)

    超全面的Swift編碼規(guī)范(推薦)

    這篇文章主要給大家介紹了關(guān)于Swift編碼規(guī)范的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家開(kāi)發(fā)swift具有一定的參考價(jià)值,需要的朋友可以參考學(xué)習(xí),下面來(lái)一起看看吧。
    2017-03-03
  • Swift教程之控制流詳解

    Swift教程之控制流詳解

    這篇文章主要介紹了Swift教程之控制流詳解,本文詳細(xì)講解了Swift中的for循環(huán)、for-in循環(huán)、For-Condition-Increment條件循環(huán)、while循環(huán)、Do-while循環(huán)、if條件語(yǔ)句等控制流語(yǔ)句,需要的朋友可以參考下
    2015-01-01
  • Swift的函數(shù)式編程詳解

    Swift的函數(shù)式編程詳解

    這篇文章主要介紹了Swift的函數(shù)式編程詳解,本文講解了Swift概覽、Swift遞歸、Swift 的高階函數(shù)和閉包等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • 詳解Swift編程中的方法與屬性的概念

    詳解Swift編程中的方法與屬性的概念

    這篇文章主要介紹了Swift編程中的方法與屬性的概念,是Swift入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11

最新評(píng)論