李洪强iOS开发Swift篇—10_方法
李洪强iOS开发Swift篇—10_方法
一、简单说明
跟其他面向对象语言一样,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
李洪强iOS开发Swift篇—10_方法的更多相关文章
- 李洪强iOS开发Swift篇---12_NSThread线程相关简单说明
李洪强iOS开发Swift篇---12_NSThread线程相关简单说明 一 说明 1)关于多线程部分的理论知识和OC实现,在之前的博文中已经写明,所以这里不再说明. 2)该文仅仅简单讲解NSThre ...
- 李洪强iOS开发Swift篇---11_变量&常量&元组
李洪强iOS开发Swift篇---11_变量&常量&元组 说明: 1)终于要写一写swift了.其实早在14年就已经写了swift的部分博客,无奈时过境迁,此时早已不同往昔了.另外,对 ...
- 李洪强iOS开发Swift篇—09_属性
李洪强iOS开发Swift篇—09_属性 一.类的定义 Swift与Objective-C定义类的区别 Objective-C:一般需要2个文件,1个.h声明文件和1个.m实现文件 Swift:只需要 ...
- 李洪强iOS开发Swift篇—08_函数(2)
李洪强iOS开发Swift篇—08_函数(2) 一.函数类型 函数类型也是数据类型的一种,它由形参类型和返回值类型组成,格式是 (形参类型列表) -> 返回值类型 1 func sum(num1 ...
- 李洪强iOS开发Swift篇—07_函数
李洪强iOS开发Swift篇—07_函数 一.函数的定义 (1)函数的定义格式 1 func 函数名(形参列表) -> 返回值类型 { 2 // 函数体... 3 4 } (2)形参列表的格式 ...
- 李洪强iOS开发Swift篇—06_流程控制
李洪强iOS开发Swift篇—06_流程控制 一.swift中的流程控制 Swift支持的流程结构如下: 循环结构:for.for-in.while.do-while 选择结构:if.switch 注 ...
- 李洪强iOS开发Swift篇—05_元组类型
李洪强iOS开发Swift篇—05_元组类型 一.元组类型介绍 1.什么是元组类型 元组类型由 N个 任意类型的数据组成(N >= 0),组成元组类型的数据可以称为“元素” 示例: let po ...
- 李洪强iOS开发Swift篇—04_运算符
李洪强iOS开发Swift篇—04_运算符 一.运算符 1.Swift所支持的部分运算符有以下一些 赋值运算符:= 复合赋值运算符:+=.-= 算术运算符:+.-.*./ 求余运算符:% 自增.自减运 ...
- 李洪强iOS开发Swift篇—03_字符串和数据类型
李洪强iOS开发Swift篇—03_字符串和数据类型 一.字符串 字符串是String类型的数据,用双引号""包住文字内容 let website = "http:// ...
随机推荐
- zzzzw_在线考试系统②管理员篇章
今天实现了管理的功能,谈谈遇到的问题!我先上图 图一 管理员的数据库 在action中访问Servlet API的非IoC方式之一:使用apache.struts2.ServletActionCo ...
- 转载---SQL Server XML基础学习<3>之--FOR XML EXPLICIT
--使用 RAW 和 AUTO 模式不能很好地控制从查询结果生成的 XML 的形状.--但是,对于要从查询结果生成 XML,EXPLICIT 模式会提供非常好的灵活性. --必须以特定的方式编写 EX ...
- 转载---SQL Server XML基础学习<1>之--FOR XML PATH
--> 测试数据:#tbIF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tbGO CREATE TABLE #tb ...
- Spring中整合Titles
在<Spriing实战(第三版)>这本书中,有一个使用titles的例子,但是这是一个不完整的例子.那么要参照起来就比较难了,于是找到了下面这篇博客. 在Spring中使用tiles2 ( ...
- iOS开发-自动布局篇:史上最牛的自动布局教学!
转载自:http://www.jianshu.com/p/f6cf9ef451d9 本文我们将提到: aotulayout(手码) VFL aotulayout(Xib) Masonry(第三方框架) ...
- ipod nano 无法添加mp4视频 电影失败解决方法
我的是nano7. 导入mp4各种错误, 同步资料库 无效等等方法都没用. 后来发现当中 多个mp4,少年pi.mp4竟然导入成功, 怀疑是mp4格式不符合nano 于是:(测试后成功) 先拉到资料库 ...
- java面试入门总结
最近正好有时间空下来,前一段时间本来打算呢,写一写阶段的总结,今天就来谈谈吧.作为一个java入门小白,之前就职于浙江大华,是通过大华10月份秋季招聘通过大华的面试. 浙江大华校招采用模式是先笔试.再 ...
- (转)myrepo
源作者主页:https://copr.fedoraproject.org/coprs/mosquito/myrepo/ 源作者github: https://github.com/1dot75cm/m ...
- ajax GET和POST请求web api 的几种方式
GET请求 1.无参数get请求 一般get请求有两种写法,一种是 $.get() 一种是$.ajax({type:"get"}), 我个人比较喜欢用后者. 下面例子主要是ge ...
- checkbox在jquery版本1.9 以上用attr不可重复操作的问题【附解决方案】
最近做个项目,需要重复多次更改checkbox的状态,使用jquery 1.10.2的最新版本时发现,对checkbox的选中状态无法多次选中.测试代码如下: <!DOCTYPE html PU ...