訪問控制可以限定哪些代碼你可以訪問恩溅,哪些代碼你不能訪問怜森。
測(cè)試環(huán)境
系統(tǒng)版本
10.11.5 Beta
Swift版本
Xcode8 beta 6(swift 3.0)
模塊
在 Swift 中我們使用模塊來管理代碼,每個(gè)模塊指定一個(gè)命名空間并強(qiáng)制指定模塊外哪些部分的代碼是可以被訪問控制的譬挚。
模塊就是常用的Framework或App bundle顶掉。為了實(shí)現(xiàn)某些通用的功能或封裝一些常用的方法,我們常會(huì)將代碼打包成Framework锁施,這個(gè)Framework就被稱為模塊淮悼,不論它被引入到其它工程或者Framework咐低,它里面的一切(屬性、函數(shù)等)都屬于這個(gè)模塊袜腥。
前文介紹的Swift的包管理器最終提供到工程使用的就是Framework见擦,這個(gè)就是模塊。
訪問級(jí)別
以下對(duì)訪問級(jí)別的描述適用于Xcode8 beta 6及以后的Swift版本(在此之前有三個(gè)訪問級(jí)別瞧挤,分別為 public
锡宋、 internal
、 private
)特恬。
open
可以訪問自己模塊或應(yīng)用中源文件里的任何實(shí)體,別人也可以訪問引入該模塊中源文件里的所有實(shí)體徐钠。
在模塊之外,open
聲明的成員變量和函數(shù)可以被override的癌刽。
相當(dāng)于原來的public
,通常情況下,某個(gè)接口或Framework被外部使用時(shí)显拜,將其設(shè)置為open
級(jí)別衡奥。public
與open
的含義大致相同,但聲明的成員變量和函數(shù)不能被override的远荠。
-
internal
可以訪問自己模塊或應(yīng)用中源文件里的任何實(shí)體矮固,但是別人不能訪問該模塊中源文件里的實(shí)體。不指定的話譬淳,默認(rèn)的就是internal
級(jí)別档址。
fileprivate
可以用作隱藏某些功能的實(shí)現(xiàn)細(xì)節(jié),作用域?yàn)楫?dāng)前源文件邻梆。
相當(dāng)于原來的private
守伸。private
只能在當(dāng)前作用域內(nèi)發(fā)生作用,比起之前更加private
浦妄。
同一文件里 extension 里也是不能訪問的到 private 修飾的成員變量尼摹。
用Swift開發(fā)Framework的iOSer,開始改代碼吧~