热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

有没有一种方法可以运行闭包而不进行测试?

如何解决《有没有一种方法可以运行闭包而不进行测试?》经验,为你挑选了1个好方法。

我在课堂上经常使用这个方案

typealias nullHandle = ()->Void
var runOnLoad: nullHandle?

因此,当我创建该类的实例时,我会...

let object = MyClass()
object.runOnLoad= { ()->Void in
  // do something
}

在类内部,我总是必须在运行该闭包之前执行此操作:

if self.runOnLoad != nil {
  self.runOnLoad()!
}     

因为我不能保证它runOnLoad不是nil,如果我尝试运行nil runOnLoad,它将崩溃。

在使用Objective-C编程一个世纪之后,我是个新手。我正在迅速使用此模式,因为这是我在Objective-C中要做的。

在Swift中有没有更好的方法来完成这件事?

谢谢



1> Martin R..:

可选的链接也可以与闭包一起使用:

self.runOnLoad?()

如果不是nil,则执行闭包,否则不执行任何操作。

当然,您也可以测试闭包,但是最好使用可选绑定而不是强制展开:

if let runOnLoad= self.runOnLoad {
    runOnLoad()
}


推荐阅读
author-avatar
打篮球的乔巴
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有