Swift中的訪問控制關鍵字

2021-08-03 01:36:01 字數 1320 閱讀 3551

訪問控制的目的在於控制其他模組或者原始檔訪問自己的內部檔案。

你可以明確地給單個型別(類、結構體、列舉)設定訪問級別,也可以給這些型別的屬性、函式、初始化方法、基本型別、下標索引等設定訪問級別。

訪問級別

定義public

可以訪問自己模組中原始檔裡的任何實體,別人也可以通過引入該模組來訪問原始檔裡的所有實體。

internal

可以訪問自己模組中原始檔裡的任何實體,但是別人不能訪問該模組中原始檔裡的實體。

fileprivate

檔案內私有,只能在當前原始檔中使用。

private

只能在類中訪問,離開了這個類或者結構體的作用域外面就無法訪問。

下面對fileprivate和private做個簡單的對比

原始檔一:

//// emaccountinfovc.swift

// emaccountbook

//// created by liuwei on 2017/6/18.

//import uikit

class emaccountinfovc: embasevc

fileprivate func showtoast()

}class testvc: emaccountinfovc

}原始檔二:

至於internal,就是我們在建立乙個類、方法或者變數等的時候,系統的預設

許可權控制,可以允許在該原始檔所在的模組內訪問。其他模組即使引入了該

(***)所在的模組,也是不能訪問的。

(這邊做一下更正,預設情況下,所有屬性和方法的訪問控制級別都是internal。但是,類是乙個例外,如果不為類制定訪問控制級別,預設為private,而不是internal。實體成員的訪問級別不能比實體本身寬鬆。)

最後的public,就是如上所說,可以訪問自己模組中原始檔裡的任何實體,別人也可以通過引入該模組來訪問原始檔裡的所有實體。

swift中as和is關鍵字

is操作符 若乙個類屬於另乙個類的子類,則會返回true,否則返回false。as操作符 某型別的乙個常量或變數可能在幕後實際上屬於乙個子類。當確定是這種情況時,你可以嘗試向下轉到它的子型別,用型別轉換操作符 as?或 as 因為向下轉型可能會失敗,型別轉型操作符帶有兩種不同形式。條件形式as?返回...

swift3 0 中inout關鍵字

swift有兩種引數傳遞方式 1.值傳遞 值傳遞的是引數的乙個副本,這樣在呼叫引數的過程中不會影響原始資料。2.指標傳遞 指標傳遞把引數本身引用 記憶體位址 傳遞過去,在呼叫的過程會影響原始資料。在swift眾多資料型別中,只有class是指標傳遞,其餘的如int,float,bool,charac...

swift之mutating關鍵字

原文 在swift中,包含三種型別 type structure,enumeration,class 其中structure和enumeration是值型別 value type class是引用型別 reference type 但是與objective c不同的是,structure和enume...