swift.jpg

入门级


此处只简单举例并不深究,深究我也深究不来。对于初学者来说delegate或block都不是一下子能理解的,所以我的建议和体会就是,理不理解咱先不说,我先把这个格式记住,对就是格式,delegate或block都是高度格式化的,用的多了自然而然不理解也就理解了


场景:从 B -> A 传值,开发中必不可少的业务需求,经常会有在B页面干完一些事情之后告诉A页面或者传值到A页面。

下面这个例子就是当B页面dismiss时将值传到A页面

Block

1. 在B中声明一个blocktypealias TestBlock = (String)->()
2. 持有一个block变量var blo: TestBlock?
3. 调用self.blo?("It is block test")
4. 在`A`中需要接受值的地方let b = B()b.blo = {str in print("test block---\\(str)")}

delagete

很多初学者一接触到delegate简直一头雾水,傻傻分不清到底谁是代理。 这里我告诉你一句话,记住了就再也不会有这个疑惑了! 你也不用管谁是代理,这些就是一个叫法而已。

谁要传值谁就拥有代理属性

比如我们这个场景,B要给A传值,那B就拥有代理属性, A就是B的代理,很简单吧!

有代理那就离不开协议,所以第一步就是声明协议。在那里声明了?谁拥有代理属性就在那里声明,所以代码就是这样的:

  1. B中声明一组协议
    protocol BDelegate {

         func testDelegate(str: String) -> Void}
  2. B中持有delegate属性
    weak var delegate: BDelegate?
  3. 调用
    self.delegate?testDelegate("It is delegate test")
  4. A中需要接受值的地方
    let b = B()
    b.delegate = self
    // 调用B的协议方法
    func testDelegate(str: String) -> Void {

     print("test delegate---\\(str)")

    }

swift中delegate与block的反向传值相关推荐

  1. iOS 中delegate的理解与使用(传值)

    之前做了半年的iOS,刚入了门,又被拉去转战java,现在iOS的那位大佬离职了,又被弄过来维护app,之前对于iOS中的delegate一直都是半知半解,所以刚好趁着这个机会把我所了解的记下来,以便 ...

  2. 反向传值的几种常用方法

    最近项目完成的差不多了,闲下来的时间突然心血来潮想自己写写以前没用过的方法.这里就包含了几种常见的反向传值的方法. 之所以现在专门自己写反向传值的博文记录,是因为之前几乎没怎么用到这些反向传值的方法, ...

  3. 使用代理进行界面之间的反向传值

    目标:在两个独立的控制器的界面之间进行反向传值 关键技术:代理 代码编写及运行环境:Xcode6.4 / 模拟器8.4 语言:Objective-C 注:使用纯代码实现,不使用xib/storyboa ...

  4. 解决Swift中present(uiImagePickerController,animated: true,completion: nil)闪退的问题

    swift中开发选择图片上传,会使用到Tap Gesture Recognizer控件,对应 UITapGestureRecognizer API,以下是代码示例(取自IOS developer li ...

  5. 探索 Swift 中的 MVC-N 模式

    作者:Marcus Zarra(twitter:@mzarra) Marcus 将会为大家介绍一种设计模式,他曾经在那些需要从互联网进行大量频繁数据请求的 iOS 应用当中使用此设计模式.这个设计采用 ...

  6. 怎样在swift中创建CocoaPods

    本文由yake_099(博客)翻译自raywenderlich,作者:Joshua Greene 原文:How to Create CocoaPods with Swift 你可能对一些比较著名的开源 ...

  7. Swift 中的 @autoclosure

    由于种种原因,掘金等第三方平台博客不再保证能够同步更新,欢迎移步 GitHub:github.com/kingcos/Per-.谢谢! Date Notes Swift Xcode Source Co ...

  8. iOS 代理反向传值

    iOS 代理反向传值 在上篇博客 iOS代理协议 中,侧重解析了委托代理协议的概念等,本文将侧重于它们在开发中的应用. 假如我们有一个需求如下:界面A上面有一个button.一个label.从界面A跳 ...

  9. 27.怎样在Swift中声明typedef?

    在OC中,我们经常会用typedef关键字来声明Block,例如: /*** 通用的空闭包类型,无参数,无返回值*/ typedef void (^GofVoidBlock)(void); 在Swif ...

最新文章

  1. “编程不规范,同事两行泪!”
  2. mysql 多列索引的生效规则
  3. 23、java中的网编基础
  4. Java实现C语言select函数_一道面试题目,分别用sql 和java,c++, c语言实现,
  5. django-form and fields validation
  6. C语言逻辑运算符 - C语言零基础入门教程
  7. 平扫加重建什么意思_在这款“奸商模拟器”里,帮助战场老兵重建家园吧!
  8. 默认权限umask、文件系统权限、特殊权限
  9. 时间管理表 - 《月总结计划表》
  10. ubuntu16.04安装微软kinect V1驱动
  11. android 呼吸灯权限_Android 呼吸灯流程分析
  12. NAT alg 和 ASPF
  13. win7 64位 纯净版旗舰版202104
  14. ode45 matlab 出错,Matlab中ode45求解微分方程组出错。
  15. C:\Windows\system32>net start MySQL 发生系统错误 1058。 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。
  16. 代码随想录——求根节点到叶节点数字之和
  17. WSL2设置局域网网访问
  18. 大数据毕设/课设 - 水质情况实时监测预警可视化设计与实现
  19. 图片优化对SEO有着重要作用
  20. ae2018怎么打开2019_ae2018中英文切换的方法

热门文章

  1. python采集cpu信息
  2. ubuntu下vim的配置
  3. 行列式介绍及Eigen/OpenCV/C++的三种实现
  4. layui如何存在多个弹窗_layui常见弹窗使用方法
  5. #实现互联网聊天_局域网内两台电脑如何实时语音聊天通话
  6. 机器人瓦力船长机器人_警察“瓦力”来啦!机器人巡逻南京路 这样的它你喜欢吗?...
  7. androidstudio jni开发_初识NDK开发(一)
  8. python启动appium服务_python下appium服务的自启动和关闭
  9. 小程序云开发,订阅消息定时批量发送实现代码
  10. React typescript issue