Swift 3.0基础学习之扩展

扩展是向一个已有的类、结构体或枚举类型添加新的功能(在swift中扩展没有名字)。相当于Objective-C中Category(OC中可以有名字的,而且只能扩展类)。这篇文章主要介绍了Swift 3.0基础学习之扩展的相关资料,需要的朋友可以参考下。 Swift 3.0中的扩展(Extension)是一种强大的特性,它允许开发者向已有的类、结构体、枚举或协议添加额外的功能,而无需修改原始的源代码。这类似于Objective-C中的Category,但Swift扩展的不同之处在于它没有名字,并且不仅限于扩展类,还可以扩展结构体和枚举。扩展的主要作用包括: 1. **添加属性**:可以为类型添加计算实例属性和计算类型属性。例如,上面的例子中扩展了Double类型,添加了如km、m、cm、mm和ft等单位转换计算属性。这些属性是只读的,因此不需要显式声明get方法。 2. **定义方法**:扩展可以增加实例方法和类型方法。这使得在不修改原有类型的情况下,能够为类型添加新的功能。 3. **提供初始化器**:扩展可以为类添加方便初始化器,但不能添加指定初始化器或取消初始化器,因为这些是类的核心构造功能,需要在原类中定义。例如,扩展Rect结构体时,可以为其提供一个基于中心点和大小的初始化器。 4. **实现协议**:扩展可以用来使一个类型符合一个或多个协议的要求。这样,即使在没有原始源代码的情况下,也可以让类型具备协议定义的所有必要成员。 5. **定义下标**:扩展能够定义新的下标操作,使得可以通过不同的方式访问类型实例的元素。 6. **嵌套类型**:虽然例子中未提及,扩展还允许为现有类型定义新的嵌套类型,增加类型的复杂性和灵活性。需要注意的是,扩展不能: - **重写已有功能**:扩展不能覆盖已经存在的属性、方法、初始化器或下标,因为其目的是扩展而不是改变原有行为。 - **添加存储属性**或为现有属性添加属性观察器:这是为了保持类型状态的不变性,避免意外改变。在实际开发中,扩展被广泛用于模块化代码,将相关功能组织在一起,提高代码的可读性和复用性。例如,可以为UIView创建一个扩展,添加一些常用的方法,如设置边框、圆角等,使得在多个视图中都能便捷地使用。 Swift 3.0的扩展是一个强大的工具,它增强了代码的灵活性和可维护性,使得开发者可以在不破坏原有代码结构的前提下,为类型添加更多的定制功能。在学习和使用Swift时,熟练掌握扩展的使用是提升代码质量的关键步骤之一。
pdf 文件大小:56.47KB