Swift基础--通知,代理和block的使用抉择以及Swift中的代理
2016-06-29 00:44
585 查看
什么时候用通知,什么时候用代理,什么时候用block
通知 : 两者关系层次太深,八竿子打不着的那种最适合用通知.因为层级结构深了,用代理要一层一层往下传递,代码结构就复杂了
代理 : 父子关系,监听的方法较多的时候使用
block : 父子关系,监听的方法较少的时候使用
Swift中的代理
swift中代理的实现
定义swift中代理的协议// swift 中的代理必须继承自NSObjectProtocol protocol VisitorViewDelegate : NSObjectProtocol { // 代理中的方法默认必须实现,有可以不实现的情况,以后整理 func visitorViewDidClickRegisterBtn(visitorView : VisitorView) func visitorViewDidClickLoginBtn(visitorView : VisitorView) }
声明代理属性
// 代理属性,与OC一样,用weak修饰 weak var delegate : VisitorViewDelegate? // 可选类型,代理可以有也可以没有
在按钮点击的事件中执行代理方法
// 注册按钮的点击 @IBAction func registerBtnClick(sender: UIButton) { // 监听到点击,通知代理做事情 // 代理中的方法默认是必须实现的(也有可选的,后面再说),所以这里没有判断代理有没有实现相应的方法 delegate?.visitorViewDidClickRegisterBtn(self) } // 登录按钮的点击 @IBAction func loginBtnClick(sender: UIButton) { // 监听到点击,通知代理做事情 delegate?.visitorViewDidClickLoginBtn(self) }
swift中为了让方法分类更清晰,实现代理或者数据源的方法单独写到分类中
// MARK: - VisitorViewDelegate代理方法 // swift 中为了区分不同类型的代理方法或者数据源方法,通过extension实现了更好的区分 extension BaseTableViewController: VisitorViewDelegate { func visitorViewDidClickRegisterBtn(visitorView : VisitorView) { ChaosLog("") } func visitorViewDidClickLoginBtn(visitorView : VisitorView) { ChaosLog("") } }
相关文章推荐
- swift项目实战--微博的未登录界面的实现,和监听未登录界面两个按钮的两种实现方法
- Swift 3.0 弹出窗口一天只一次
- iOS开发 - Swift使用JavaScriptCore与JS交互
- Swift基础--Swift中的分类以及在分类中扩展init方法的注意事项
- Swift开发小技巧--private访问修饰符报错的情况
- Swift开发小技巧--TabBar中间按钮的添加方案
- Swift Study Day 2
- 在Storyboard中勾选hide bottom bar on push时,底部View下沉的问题
- 【Swift】Runtime动态性分析
- 【Swift】Runtime动态性分析
- 详解Swift中enum枚举类型的用法
- Swift 中调试状态下打印日志
- Swift -- 8.3 多态
- swift--Swift中String和Character的使用与总结
- 十款不容错过的Swift iOS开源项目及介绍
- 十款不容错过的Swift iOS开源项目及介绍
- Swift String
- 跑马灯动画点击事件
- Swift -- 8.2 类的构造与析构
- Swift -- 8.1 继承