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

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

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

服務器之家 - 編程語言 - Swift - Swift中的Access Control權限控制介紹

Swift中的Access Control權限控制介紹

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

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

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

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

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

小明說哇靠學姐你還會妖法......

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

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

#####private 私有的

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

#####internal 內部的

標記為internal的代碼塊,在整個應用(App bundle)或者框架(framework)的范圍內都是可以訪問的。

#####public 公開的

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

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

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

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

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

#####舉個例子:

復制代碼 代碼如下:


public class ListItem {

 

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

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

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

    // 這段沒有特別標記權限,因此屬于默認的internal級別。在框架目標內可用,但對于其他目標不可用
    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
        }
    }

 

當我們使用Objective-C和Swift混合開發時,需要注意:

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

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

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

延伸 · 閱讀

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

    Swift能代替Objective-C嗎?

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

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

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

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

    Swift教程網5162020-12-18
  • SwiftSwift中轉義閉包示例詳解

    Swift中轉義閉包示例詳解

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

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

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

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

    追到夢的魔術師14382021-01-06
  • SwiftSwift的74個常用內置函數介紹

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

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

    Swift教程網5802020-12-19
  • SwiftSwift使用CollectionView實現廣告欄滑動效果

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

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

    Stevin的技術博客12372021-01-13
  • 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
主站蜘蛛池模板: 果冻传媒mv在线观看入口免费 | 国产色网| 波多野结衣在线中文字幕 | 精品9e精品视频在线观看 | 国产精品久久久久久久久久久搜索 | 成年人免费观看视频网站 | 无码AV毛片色欲欧洲美洲 | 牛人国产偷窥女洗浴在线观看 | 精品国产区 | 全黄h全肉细节修仙玄幻文 全彩调教侵犯h本子全彩妖气he | 国产欧美日韩视频在线观看一区二区 | 糖心hd在线观看 | 成人免费观看一区二区 | 亚洲精品电影天堂网 | 99久久精品国产一区二区 | 免费看h片的网站 | 欧美日韩亚洲第一区在线 | 成人国产精品视频频 | 暖暖 免费 高清 日本 在线1 | 高h喷水荡肉爽文np肉色文 | 色综合久久六月婷婷中文字幕 | 国产亚洲福利一区二区免费看 | 疯狂伦交1一6小说 | 99久久精品国产一区二区 | 国产成人精品一区二区不卡 | aigao视频 | 啪一啪在线视频 | 色天天久久 | 日韩欧美国产在线 | 91久久色| 果冻传媒mv在线观看入口免费 | 91短视频在线播放 | 9丨精品国产高清自在线看 9久热这里只有精品免费 | 四虎影院2022 | 桃色视频破解版 | 青青草久| 男女一级特黄a大片 | 国产在线步兵一区二区三区 | 91大神大战高跟丝袜美女 | 牛牛影院成人免费网页 | 亚洲丰满女人ass硕大 |