程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Swift中的Access Control權限掌握引見

Swift中的Access Control權限掌握引見

編輯:更多關於編程

Swift中的Access Control權限掌握引見。本站提示廣大學習愛好者:(Swift中的Access Control權限掌握引見)文章只能為提供參考,不一定能成為您想要的結果。以下是Swift中的Access Control權限掌握引見正文


假如您之前沒有接觸過權限掌握,先來聽一個小故事:

小明是五道口工業學院的一個年夜一重生,比來他有點懊惱,由於同屋常常用他的熱水壺,似乎那是本身家的一樣,可是礙於同窗人情,又欠好意思說。直到有一天,他和學姐小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外面可以下載更新喔。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved