3 回答

TA貢獻1789條經驗 獲得超10個贊
open 是Swift 3中的新訪問級別,隨實現而引入
SE-0117允許區分公共訪問權限和公共替代權限
自2016年8月7日起,Swift 3快照和Xcode 8 beta 6都可以使用它。
簡而言之:
在定義模塊之外,可以訪問和可繼承一個open類。一類成員是可訪問和 可重寫的定義模塊的外部。open
在定義模塊之外,可以訪問一個public類,但不能將其子類化。甲類成員是可訪問的,但 不可重寫的定義模塊的外部。public
那么open是什么public曾經在以前的版本雨燕和的訪問public受到限制。或者,如Chris Lattner在 SE-0177中所述:允許區分公共訪問權限和公共可重寫性:
現在,“開放”只是“比公眾更公開”,提供了一個非常簡單和干凈的模型。
在您的示例中,open var hashValue是一個可以訪問的屬性,可以在NSObject子類中覆蓋它。

TA貢獻2036條經驗 獲得超8個贊
開放是一種訪問級別,是為了對Swift的類繼承施加限制而引入的。
這意味著開放訪問級別只能應用于類和類成員。
在課堂上
一個開放類可以在其定義的模塊中以及在導入定義該類的模塊的模塊中子類化。
班級成員
同樣適用于班級成員。打開的方法可以在定義該模塊的模塊中和在導入定義該方法的模塊的模塊中被子類覆蓋。
此更新的需要
某些類的庫和框架并非設計為子類化,這樣做可能會導致意外行為。Apple原生庫也不允許覆蓋相同的方法和類,
因此,添加之后,它們將相應地應用公共和私有訪問級別。
- 3 回答
- 0 關注
- 864 瀏覽
添加回答
舉報