【Swift】 委托代理设计模式- 寻人启事
来源:互联网 发布:nginx实现会话保持 编辑:程序博客网 时间:2024/05/17 23:17
Protocol(协议)用于统一方法和属性的名称,而不实现任何功能。协议能够被类,枚举,结构体实现,满足协议要求的类,枚举,结构体被称为协议的遵循者。
遵循者需要提供协议指定的成员,如属性,方法,操作符,下标等。
protocol SomeProtocol { // 协议内容}
这是简单的定义,更多相关与协议的语法请看 The Swift Programming Language中文完整版(CocoaChina精校)
该电子书讲得再详细不过了,这里只是一个简单的例子!
在Swift中,开发者可以采用Objective-C中定义好的协议。和Swift协议一样,所有Objective-C协议都写在一个用逗号隔开的列表中,跟在所在类的父类名后面(如果它有父类的话)。
SWIFTclass MySwiftViewController: UIViewController, UITableViewDelegate,UITableViewDataSource {// 定义类 }
好了,具体代码看下面:
三要素: 一份协议,委托者,代理人
委托人
//// Mother.swift// 1.Swift 委托代理设计模式-寻人启事//// Created by AsTryE on 14-6-19.// Copyright (c) 2014年 TTAsTryE. All rights reserved.//import Foundationclass Mother { var sex: String? var name: String? init(_sex: String!, _name: String!) { sex = _sex name = _name } var delegate: ChildDelegate? func lookingforChild(name: String!) { println("我在找我的孩子:\(name),找到了给你500万!") // 委托 委托人帮她找孩子,不管了,找到了,委托人会自己通知她的 if let cName = delegate?.lookForMyChild(name) { if cName == "OK" { self.thankyou() } else { println("哦,天呐,竟然没有找到我的孩子,去哪了呢?") } } } func thankyou() { println("谢谢你帮我找到了孩子,一定会给你报酬的!") }}
协议类
//// ChildDelegate.swift// 1.Swift 委托代理设计模式-寻人启事//// Created by AsTryE on 14-6-19.// Copyright (c) 2014年 TTAsTryE. All rights reserved.//import Foundationprotocol ChildDelegate { var age: Int? { get set } class func thankyousomuch() -> Void func lookForMyChild(name: String) -> String}
代理人
//// Person.swift// 1.Swift 委托代理设计模式-寻人启事//// Created by AsTryE on 14-6-19.// Copyright (c) 2014年 TTAsTryE. All rights reserved.//import Foundationclass Person: ChildDelegate{ var age: Int? var sex: String? var name: String? var childName: String[] init(_sex: String!, _name: String!) { sex = _sex name = _name // 孤儿院 childName = ["小明", "小海", "笑笑", "小伙", "小米", "小胖", "消消", "小乐", "小秘", "校花"] } class func thankyousomuch() { } // 找孩子的代理方法 func lookForMyChild(name: String) -> String { // 这里在孤儿院里面开始 寻找 指定名称的孩子 for child : String in childName { if name == child { return "OK" } } return "not found" }}
main.swift
//// main.swift// 1.Swift 委托代理设计模式-寻人启事//// Created by AsTryE on 14-6-19.// Copyright (c) 2014年 TTAsTryE. All rights reserved.//import Foundationvar mother = Mother(_sex: "女", _name: "红红")var mark = Person(_sex: "男", _name: "打工仔")// 设置代理mother.delegate = mark// mother 开始寻找 她的 小红mother.lookingforChild("小红")// 换一个 寻找 小明mother.lookingforChild("小明")
运行图
点击下载完整Demo
0 0
- 【Swift】 委托代理设计模式- 寻人启事
- Swift 委托/代理设计模式
- swift 委托/代理模式
- delegate代理(委托)设计模式
- 浅谈代理/委托设计模式
- iOS 代理委托设计模式
- 委托(代理) 设计模式
- Swift 中的委托/代理模式(转载)
- 委托设计模式(即代理模式)
- Swift设计模式之保护代理模式
- 委托代理设计模式(协议)
- iOS 委托代理delegate设计模式
- iOS 委托代理delegate设计模式
- 设计模式之委托代理(delegate)
- iOS 中的设计模式--委托代理
- Swift委托代理实现
- swift详解之十一------------协议、委托(代理)模式
- OC设计模式之代理(委托)设计模式
- FEKO6.0破解安装
- 开源学习 Rweka
- Hibernate中三表联结的HQL语句写法
- IOS仿网易新闻客户端左右侧栏
- js+加载等待效果
- 【Swift】 委托代理设计模式- 寻人启事
- Virtual Box 安装共享文件夹
- dedeCMS中遇到CGP的问题
- 1111
- 虚拟机 snap 快照
- 46_leetcode_letter Combinations of a Phone Number
- 1111
- 开源资讯 综合 开源与地球科学有什么关系
- 华为SmartCDN系统