原創文章,歡迎轉載。轉載請註明:關東昇的博客 php
訪問級別:java
Swift提供了3種不一樣訪問級別,對應的訪問修飾符爲:public、internal和private。這些訪問修飾符能夠修飾類、結構體、枚舉等面向對象的類型,還能夠修飾變量、常量、下標、元組、函數、屬性等內容。微信
public。能夠訪問本身模塊中的任何public實體。若是使用import語句引入其餘模塊,咱們能夠訪問其餘模塊中的public實體。框架
internal。只能訪問本身模塊的任何internal實體,不能訪問其餘模塊中的internal實體。internal能夠省略,換句話說,默認訪問限定是internal。函數
private。只能在當前源文件中使用的實體,稱爲私有實體。使用private修飾,能夠用做隱藏某些功能的實現細節。網站
使用訪問修飾符的示例代碼以下:spa
public class PublicClass {} internal class InternalClass {} private class PrivateClass {} public var intPublicVariable = 0 let intInternalConstant = 0 private func intPrivateFunction() {}
使用最佳訪問級別:.net
因爲中Swift中訪問限定符可以修飾的實體不少,使用起來比較繁瑣,下面咱們給出一些最佳實踐。設計
1. 統一性原則code
原則1:若是一個類型(類、結構體、枚舉)定義爲internal或private,那麼類型聲明的變量或常量不能使用public訪問級別。由於public的變量或常量能夠被任何人訪問,而internal或private的類型不能夠。
原則2:函數的訪問級別不能高於它的參數和返回類型(類、結構體、枚舉)的訪問級別。假設函數聲明爲public級別,而參數或者返回類型聲明爲internal或private,就會出現函數能夠被任何人訪問,而它的參數和返回類型不能夠訪問的矛盾狀況。
2. 設計原則
若是咱們編寫的是應用程序,應用程序包中的全部Swift文件和其中定義的實體,都是供本應用使用的,而不是提供其餘模塊使用,那麼咱們就不用設置訪問級別了,即便用默認的訪問級別。
若是咱們開發的是框架,框架編譯的文件不能獨立運行,所以它天生就是給別人使用的,這種狀況下咱們要詳細設計其中的Swift文件和實體的訪問級別,讓別人使用的能夠設定爲public,不想讓別人看到的能夠設定爲internal或private。
3. 元組類型的訪問級別
元組類型的訪問級別遵循元組中字段最低級的訪問級別,例以下面的代碼:
private class Employee { var no: Int = 0 var name: String = "" var job: String? var salary: Double = 0 var dept: Department? } struct Department { var no: Int = 0 var name: String = "" } private let emp = Employee() var dept = Department() private var student1 = (dept, emp) ①
4. 枚舉類型的訪問級別
枚舉中成員的訪問級別繼承自該枚舉,所以咱們不能爲枚舉中的成員指定訪問級別。示例代碼以下:
public enum WeekDays { case Monday case Tuesday case Wednesday case Thursday case Friday }
因爲WeekDays枚舉類型是public訪問級別,於是它的成員也是public級別。
歡迎關注關東昇新浪微博@tony_ 關東昇。
關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息
更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.php