2017-07-26 48 views
0

我一直在搜索訪問控制指南和教程,但找不到任何信息。我應該使用內部類型的公共成員嗎?

想象一下,你有一些類A實現的Swift模塊。這個班級是internal。它有一些財產,我們稱之爲prop

問題是:如果將訪問級別從internal設置爲public,會發生什麼變化?

internal class A { 

    public var prop: String? 
} 

我看到了這樣的代碼的例子,但不明白,爲什麼。當你決定製作你的類型public時,它是否有用,所以你不需要改變屬性和方法的訪問級別?或者它還有一些其他的實際用途,如給別人訪問,而類型仍然是internal

+2

比較[爲什麼我允許方法訪問比類訪問更少限制?](https://stackoverflow.com/q/40289745/2976878)。訪問沒有區別,但它允許您記錄如果類型暴露於較高訪問級別,您認爲成員應具有的訪問級別。 – Hamish

回答

0

按照蘋果的文檔

公共變量不能被定義爲具有內部, 文件的私人或私有類型,因爲類型可能不提供 無處不在的公共變量被使用。

進一步瞭解內部 -

內部訪問使得能夠從他們的定義模塊任何源文件 內使用的實體,但不是在 模塊之外的任何源文件。定義應用程序或框架的內部結構時,通常使用內部訪問。

所以沒有使用內部類聲明的public。

0

有一個在整體功能上沒有區別:因爲你的類是internal,它不能在公衆成員暴露出來,說public var propA : Apublic func f(a:A),以便其成員有public的知名度其實沒什麼區別。

但是,通過使用public您可以避免重複自己:您已經指定了全班internal,因此您不需要將其所有成員都指定爲internal

如果您決定稍後將類別轉換爲public,也會變得很有幫助,因爲您只將一個internal修改器更改爲public

相關問題