type
status
date
slug
summary
tags
category
icon
password
example-row
example-row
方法是与某些特定类型相关联的函数。类、结构体、枚举都可以定义实例方法和类型方法。在 Objective-C 中,类是唯一能定义方法的类型。
实例方法
实例方法是属于某个特定类、结构体或者枚举类型实例的方法。
self
类型的每一个实例都有一个隐含属性叫做
self
,self
完全等同于该实例本身。- 在一个实例的实例方法中使用这个隐含的
self
属性来引用当前实例。
- 在一个方法中使用一个已知的属性或者方法名称,如果没有明确地写
self
,则指当前实例的属性或者方法。
- 主要使用场景是某个参数名称与实例的某个属性名称相同的时候,使用
self
属性来区分参数名称和属性名称。
实例方法中修改值类型的属性
- 结构体和枚举是值类型。默认情况下,值类型的属性不能在它的实例方法中被修改。
- 要修改结构体或者枚举的属性,则需要在实例方法前加上
mutating
,表示可以从方法内部改变属性。
- 只有结构体变量才能够调用可变的实例方法改变属性。
在可变方法中给self赋值
可变方法能够赋给隐含属性
self
一个全新的实例。枚举的可变方法可以把
self
设置为同一枚举类型中不同的成员:类型方法
类型本身上调用的方法。
- 在方法的
func
关键字之前加上关键字static
,来指定类型方法。
- 类还可以用关键字
class
来指定,从而允许子类重写父类该方法的实现。
- 在 Objective-C 中,只能为 Objective-C 的类类型(classes)定义类型方法(type-level methods)。
- 在Swift 中,你可以为所有的类、结构体和枚举定义类型方法。
- 在类型方法的方法体(body)中,
self
属性指向这个类型本身,而不是类型的某个实例。
- 一个类型方法可以直接通过类型方法的名称调用本类中的其它类型方法,而无需在方法名称前面加上类型名称。
- 在结构体和枚举中,也能够直接通过类型属性的名称访问本类中的类型属性,而不需要前面加上类型名称。
- 作者:黄x黄
- 链接:https://hxhowl.site/article/swift016
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章