雨燕3:私有和文件私有解释

苹果已经发布了swift 3,许多开发人员都在做噩梦,因为在进行必要的更改之前,较早的代码将拒绝在Xcode8中进行构建。 这可能意味着很多晚上无法入睡,几天中有些晚工作时间,尽管其中有许多人完全放松下来。

我将在即将到来的帖子中写有关快速更新的内容,为此,我正在讨论一个较小的部分。 Swift 3带来了许多重大变化,其中之一是引入了新的Access Modifier: Fileprivate

Fileprivate现在是早期Swift版本中的private。 您可以很好地从名称本身猜测,在班级级别是私有的。 无论使用什么功能,使用Fileprivate定义的变量都只能在所有范围内的该类中访问。

其中as,private修饰符比Fileprivate更具限制性。 所有带有private的声明只能在词法范围(声明的地方)内访问。 例如,如果您使用Fileprivate修饰符声明了一个类变量,则可以在该源文件中的所有扩展名中使用,在private中使用private会产生错误,因为它是在类范围中声明的,而现在已在中使用。 我将使用表格视图示例进行演示。

步骤1 :创建一个新的视图控制器文件,以及两个类级别的ivars,它们都是String数组,一个带有private修饰符,另一个带有FilePrivate。

步骤2 :对该类进行扩展,使其符合UITableViewDataSource协议,并实现两个tableview数据源函数numberOfRowsInSection()和cellForRowAtIndexPath()。

步骤3 :在numberOfRowsInSection()中,首先返回fileprivate数组计数。 一切都会好起来,代码将成功编译。 现在尝试返回私有数组计数,您甚至不会在代码意义上自动完成该变量。 即使您手动编写,编译器也会给出错误。 由于因为您在类作用域中声明了私有变量,所以您不能在扩展中使用它,因为它们是不同的作用域。

根据经验,专用于变量,常量,内部结构和仅在类/结构的声明内使用的类。 如果要在整个文件中访问变量,请使用Fileprivate。

这都是第一个故事,其他新的更新博客即将推出。