Swift入门教程18-代理Delegate

原创Blog,转载请注明出处

http://blog.csdn.net/hello_hwc

一 代理的理解

何为代理?顾名思义,代理就是把自己做的任务交给别人做。让代理遵循着监听到一些事件,实现一些数据源。做过IOS开发的都应该知道TableView有两个属性,delegate和dataSource。这就是代理最好的体现,tableView在设计之初并不知道这个tableView将来会放在哪里,存储的是什么东西,这里数据源就起到了关键性作用:对于设计者来说,我只要依据数据源来生成对应的视图,对于使用者,只需要填充数据源。而delegate则给予用户一个接口来响应一些事件,比如tableview中的一行被点击等等。

二 实例解析

用一个例子来分析下,对于一个设计者应该如何设计代理,这个例子主要用来模拟一些耗时比较长的任务(用sleep替代),那么把要开始执行该任务和执行完了该任务两个事件返回给用户尤其重要。首先打开XCode建立一个新的工程,选择Swift语言,接下来只需要修改默认创建的Viewcontroller

(1)定义抽象的实现方案(协议),该协议的遵循着要实现两个事件

protocol hwcSleepDelegate{

func willStartToSleep()

func didFinishedSleep()

}

(2)定义功能类,来模拟耗时比较长的任务

class hwcSleep{

var delegate:hwcSleepDelegate?

func startToSleep(time:UInt32){

self.delegate?.willStartToSleep()

NSLog("%@","Before sleep in startToSleep")

sleep(time)

NSLog("%@","After sleep in startToSleep")

self.delegate?.didFinishedSleep()

}

}

(3)在使用该功能类中,实现代理和代理方法

class ViewController:UIViewController,hwcSleepDelegate{

var sleepInstance:hwcSleep =hwcSleep()

override
func viewDidLoad() {

super.viewDidLoad()

sleepInstance.delegate =self

sleepInstance.startToSleep(2)

// Do any additional setup after loading the view, typically from a nib.

}

func willStartToSleep() {

NSLog("%@","Will start in delegate method")

}

func didFinishedSleep() {

NSLog("%@","Finish sleep in delegate method")

}

}

最后输出:

时间: 2024-12-24 16:10:12

Swift入门教程18-代理Delegate的相关文章

Swift入门教程:基本语法大全

原文:Swift入门教程:基本语法大全       简介:                                                                                                                                                                                  什么是Swift                                  

Swift入门教程:基本语法(三)

打印输出 Swift提供了2个打印输出函数 println :输出内容后会自动换行 print :对比println,少了个自动换行的功能 示例 输出字符串 println("欢迎学习传智播客iOS学院Swift教程") var name = "传智播客iOS学院\n" print(name) 输出其他数据类型 var age = 7 println(age) println("我今年\(age)岁") 元组类型 什么元组类型 元组类型由 N个

Swift入门教程:基本语法(二)

数字格式 数字可以增加额外的格式,使它们更容易阅读 可以增加额外的零 0 let money = 001999           // 1999 let money2 = 001999.000   // 1999.0 可以增加额外的下划线 _ ,以增强可读性 let oneMillion1 = 1_000_000    // 1000000 let oneMillion2 = 100_0000      // 1000000 let overOneMillion = 1_000_000.000

Swift入门教程:基本语法(一)

      简介:                                                                                       什么是Swift Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为"雨燕",右上角的图标就是它的LOGO 跟Objective-C一样,可以用于开发iOS.Mac应用程序 苹果从2010年7月开始设计Swift语言,耗时4年打造 Swift的语法特点

Swift入门教程17-ARC与强弱引用

ARC 全称自动引用计数,是一种内存管理机制.当一块内存的强引用的数目等于0的时候,则这块内存将会被释放. 由于在Swift中,枚举和结构体都是值类型,不通过引用方式进行存储和传递,所以Swift中只有类的实例会进行自动引用计数. 规则:在创建的初始,类的实例的引用计数为1,没增加一次强引用,引用计数加1,每个强引用为nil后,引用计数减1.弱引用不会增加引用计数,关键词weak 注意,不能访问已经被释放了的内存,这样会造成程序崩溃. 一.强弱引用 用下图表示会直观一些 一个强引用,一个弱引用.

Swift入门教程:基本运算符

基本运算符 Swift所支持的基本运算符 赋值运算符:= 复合赋值运算符:+=.-= 算数运算符:+.-.*./ 求余运算符:% 自增.自减运算符:++.-- 比较运算符:==.!=.>.<.>=.<= 逻辑运算符:&&.||.! 三目运算符:? : 范围运算符:.. .... 赋值运算符 单对单赋值 var a = 5 let b = 20 多对多赋值 var (x, y) = (1, 2) // x的值是1,y的值是2 跟C\OC不一样的是:Swift的赋值运算

Swift入门教程3-字符串String

原创blog,转载请注明出处 String 在swfit中,String兼容Unicode的方式.使用方法和C语言类似. 注意 在Cocoa和Cocoa touch中,Swift的String,和Foundation中的NSString是兼容的,所有NSString额API都可以调用String类型 字符串常量 1.含转义字符:例如\n,\t等 2.单字节Unicode标量,\xmm 3.双字节Unicode标量,\ummmm 4.四字节Unicode标量,\Ummmmmmmm 这里的m为十六进

Swift入门教程19-泛型

原创Blog,转载请注明出处 blog.csdn.net/hello_hwc 一 泛型的定义 和C++的类似,泛型定义了一种适用于任何类型的,可重用的代码,用一种抽象的方式来实现代码.Swift的Array和Dictionary都是用泛型来实现的,因为Array可以保存String类型的变量,也可以保存Int类型的. 举个例子 func swapTwoInts(inout a: Int, inout b: Int) { let temporaryA = a a=b b = temporaryA

swift入门教程系列7-控制流

控制流 总的来说使用方式和C,C++,Objective C等差不多 这里讲解可能会少一点,大家实际写点代码就会用了,很简单,可以侧重看看switch,swift中的swift功能更多一些 有一点特别要注意的是,swift中的条件表达式的结果一定是Bool类型的 也就是说 var a  = 19 if a{ } 这样的表达式是不对的,因为a是Int类型 1.if 常用的if也就三种 if bool{ } if bool{ } else{ } if bool{ } else if{ } else{