訪問控制的目的在於控制其他模組或者原始檔訪問自己的內部檔案。
你可以明確地給單個型別(類、結構體、列舉)設定訪問級別,也可以給這些型別的屬性、函式、初始化方法、基本型別、下標索引等設定訪問級別。
訪問級別
定義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...