Swift 3.0:专用与文件专用
私人的
根据Apple的文档,“私有访问将实体的使用限制为包含在声明中。”私有访问是最严格的访问级别。 基本上,这仅意味着您无法在定义私有实体的范围之外访问私有类型/功能/属性。
在下面的示例中,由于var visibleButton和func getAge()都在PrivatePerson类中定义,因此我们可以在PrivatePerson类的整个范围内访问这些函数。 但是,我们无法访问PrivatePerson扩展内的那些实体,因为该扩展不在定义私有实体的类的范围之内。
根据上面的知识,您能解释为什么我将handleTapGesture函数设为私有吗?
由于handleTapGesture函数是一个辅助方法,将仅由扩展中的configButtons()函数调用,因此,我决定仅对扩展访问函数。 如果我尝试在类的定义内调用handleTapGesture函数,则会收到“由于’私有’保护级别而无法访问”错误。
文件私有
根据Apple的文档,“ Fileprivate访问将实体的使用限制为自己定义的源文件。”如果您熟悉Swift 2.0,则fileprivate等同于Swift 2.0的私有文件。
文件私有和私有之间的主要区别如下所示。 可以在整个文件中访问Fileprivate实体。 在下面的示例中,即使在FileprivatePerson类中定义了var invisibleButton和getName(),我们仍然可以在FileprivatePerson扩展中访问它们。
您可能想知道为什么从未将实体定义为私有/文件私有,并且从未收到任何警告。 这是因为Swift的默认值为“内部”,这意味着实体(类型/功能/属性等)可被包括实体定义的整个应用/框架访问。 就您对所编写代码的体贴程度而言,将实体定义为私有/文件私有只是迈出了一步。 编码愉快! 🤓
- 未findXCode 4.2 MainStoryBoard
- Parse.com – 如何search/检索当前用户的安全对象
- AddressBook:区分kABSourceTypeExchangeGALtypes的来源
- ALAssetsLibrary似乎返回错误的我的照片数量
- 在后台moc中删除对象然后在主moc中刷新它导致NSFetchedResultsController更新崩溃
- 无法在@interface或@protocol中声明variables
- predicateWithBlock作为ABPeoplePicker.predicateForEnablingPerson的谓词导致exception
- 多个ASIHTTP请求
- 2016年可可元首会议