当前位置: 首页 > news >正文

iOS开发Swift篇—(十)方法

一、简单说明

跟其他面向对象语言一样,Swift中的方法可以分为2大类:

(1)实例方法(Instance Methods)

  在OC中,实例方法以减号(-)开头

(2)类型方法(Type Methods)

  在OC中,类型方法以加号(+)开头

二、实例方法

1.什么是实例方法?

实例方法:就是只能用对象实例调用的方法,也可以称为“对象方法”

实例方法的语法跟函数基本一样

2.代码示例:

复制代码
1 class Dog {
2  func run() {
3 println("Dog--->run")
4  }
5 }
6 var d = Dog()
7 d.run()
复制代码

说明:

第2行定义了一个run方法

第7行调用run方法:调用方法也跟调用函数很像,格式是“对象名.方法名(参数)”

三、方法的参数

(1)方法和函数的参数有点区别,默认情况下

方法的第1个参数名仅仅是局部参数名

方法的其他参数名(除第1个参数名以外)既是局部参数名,又是外部参数名

复制代码
1 class Calculator {
2 func sum(num1: Int, num2: Int) -> Int {
3 return num1 + num2
4  }
5 }
6 var c = Calculator()
7 c.sum(10, num2: 20)
复制代码

说明:

num1仅仅是局部参数名,num2既是局部参数名,又是外部参数名

相当于func sum(num1: Int, #num2: Int) -> Int

(2)可以在参数名前面加个下划线 _,去掉默认的外部参数名

复制代码
1 class Calculator {
2 func sum(num1: Int, _ num2: Int) -> Int {
3 return num1 + num2
4  }
5 }
6 var c = Calculator()
7 c.sum(10, 20)
复制代码

说明:num1、num2都仅仅是局部参数名,不是外部参数名

(3)也可以给第1个参数增加外部参数名

复制代码
1 class Calculator {
2 func sum(#num1: Int, num2: Int) -> Int {
3 return num1 + num2
4  }
5 }
6 var c = Calculator()
7 c.sum(num1: 10, num2: 20)
复制代码

说明:num1、num2既是局部参数名,又是外部参数名

四、类型方法

1.什么是类型方法?

  被关键字class修饰的方法,也可以称为“类方法”

1 class Calculator {
2 class func sum(num1: Int, num2: Int) -> Int {
3 return num1 + num2
4  }
5 }
6 Calculator.sum(10, num2: 20)

说明:

第2行定义了一个类型方法

类型方法的特点:直接用类调用类型方法,不能用对象调用类型方法

第6行调用类型方法,格式是“类名.方法名(参数)”

注意:类型方法和实例方法的方法名可以一样

复制代码
 1 class Calculator {
 2 class func sum(num1: Int, num2: Int) -> Int {
 3 return num1 + num2
 4  }
 5 func sum(num1: Int, num2: Int) -> Int {
 6 return num1 + num2
 7  }
 8 }
 9 Calculator.sum(10, num2: 20)
10 var c = Calculator()
11 c.sum(10, num2: 20)
复制代码

说明:

第2行定义的类型方法和第5行定义的实例方法:方法名一样

第9行使用类调用类型方法

第11行使用对象调用实例方法

五、self

1.简单说明

在每个方法内部,都有个隐含的属性self,它的作用跟Objective-C中self的用法基本一致

self代表的是什么?谁调用这个方法,self就代表谁

(1)在实例方法中:self代表调用方法的某个对象

(2)在类型方法中:self代表调用方法的某个类

2.代码示例

复制代码
 1 class Person {
 2 class func run() {
 3 println("class func run")
 4  }
 5  func run() {
 6 println("func run")
 7  }
 8 class func test() {
 9  self.run();
10  }
11  func test() {
12  self.run();
13  }
14 }
15 var p = Person()
16 p.test()
17 Person.test()
复制代码

程序的输出结果是:

func run

class func run

相关文章:

  • 数据库优化和SQL操作的相关题目
  • TNF诱导的关节破坏由IL-1介导
  • Boost中的一些实用技术
  • uWSGI参考资料(1.0版本的配置选项列表)
  • 数据产品设计专题(2)-数据产品设计方法论
  • 某些书籍翻译的太屎了,误导人!
  • js
  • 服务模拟-ServiceMock
  • 超链接点击一次就失效不能再点击
  • #Java异常处理
  • 1.请求安全-- 一个简单的 单设备登录 单点登录
  • CST UTC
  • 在CentOS上安装与配置Tomcat
  • Modular Multiplicative Inverse(模乘逆元)
  • 线程同步辅助类——CountDownLatch
  • angular2开源库收集
  • KMP算法及优化
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 三分钟教你同步 Visual Studio Code 设置
  • 为什么要用IPython/Jupyter?
  • 一份游戏开发学习路线
  • No resource identifier found for attribute,RxJava之zip操作符
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • #、%和$符号在OGNL表达式中经常出现
  • (poj1.3.2)1791(构造法模拟)
  • (SpringBoot)第二章:Spring创建和使用
  • (二)构建dubbo分布式平台-平台功能导图
  • (一)Neo4j下载安装以及初次使用
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转载)hibernate缓存
  • (转载)从 Java 代码到 Java 堆
  • (轉貼) UML中文FAQ (OO) (UML)
  • . Flume面试题
  • .net 按比例显示图片的缩略图
  • .NET开发者必备的11款免费工具
  • .net快速开发框架源码分享
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [ 数据结构 - C++]红黑树RBTree
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [C++]类和对象(中)
  • [IDF]被改错的密码
  • [JavaScript]_[初级]_[不使用JQuery原生Ajax提交表单文件并监听进度]
  • [k8s系列]:kubernetes·概念入门
  • [Latex] \bibitem{} | .bbl 格式参考文献转换与获得
  • [linux] shell中的()和{}
  • [Linux]history 显示命令的运行时间
  • [linux]--关于进程概念(上)
  • [MySQL FAQ]系列 -- 如何利用触发器实现账户权限审计