objective-c - 在 Objective-C 和 Swift 中链接可空块?
问题描述
我需要有可能写:
//if someCase1
block1(block2(block3()))
//if someCase2
block1(block3())
//if someCase3
block2(block3())
其中块是一些代码块。我看到了很多示例,但没有人描述如何同时声明链接块和可空块(nullable
这种情况似乎是必需的)。
如何解决这个问题?Swift 和 Objective-C 解决方案都适用。
解决方案
在Swift中,您可以使用closures
.
即创建variables
类型3 (()->())
-block1, block2, block3
block2
在里面打电话block1
block3
在里面打电话block2
例子:
let dispatchGroup = DispatchGroup()
dispatchGroup.notify(queue: .main) {
print("All blocks executed")
}
dispatchGroup.enter()
let block3 = {
print("block3 called")
dispatchGroup.leave()
}
dispatchGroup.enter()
let block2 = {
print("block2 called")
block3()
dispatchGroup.leave()
}
dispatchGroup.enter()
let block1 = {
print("block1 called")
block2()
dispatchGroup.leave()
}
block1()
在上面的代码中,我使用DispatchGroup
了synchronous
所有的blocks
.
推荐阅读
- python - Django过滤多对多关系
- javascript - 如何检索 Facebook 视频缩略图?
- c++ - std::map 有没有办法在 O(1) 时间内给出所有键 <= target_key 的计数器?
- angular - Angular/RxJS - 有一个 RxJS 管道用于流启动?
- python - 如果没有子类对象,为什么类属性不起作用?
- scala - .scala 文件不会在 spark-shell 上运行/产生输出是否有原因?
- office-js - 如何检测加载项在 Outlook for Desktop 和 Outlook Web 中工作的屏幕?
- sql - db2中sql查询中的case when子句
- ios - 如何设置 collectionView 位置?
- excel - 拆分字符串 vba