我们在 Objective-c 中有一个方法,我们想将其比特转换为 swift,我们已经完成了大多数方法的任务,但被困在如何处理 voids 上。快速代码如下:
extension PMKPromise {
private func objCBlockFromPromiseClosure(closure: (AnyObject) -> (PMKPromise?)) -> AnyObject {
return unsafeBitCast(closure as @convention(block) (AnyObject) -> (PMKPromise?), AnyObject.self)
}
func swiftThen(closure: (AnyObject) -> (PMKPromise?)) -> PMKPromise {
return self.then()(objCBlockFromPromiseClosure(closure))
}
func swiftCatch(closure: (AnyObject) -> (PMKPromise?)) -> PMKPromise {
return self.catchOn()(dispatch_get_main_queue(), objCBlockFromPromiseClosure(closure))
}
}
上面对应的Objective-C代码在这里:
- (PMKPromise *(^)(id))then;
- (PMKPromise *(^)(dispatch_queue_t, id))catchOn;
我们需要帮助的方法在这里:
- (PMKPromise *(^)(void(^)(void)))finally;
目标是创建一个新的 swiftFinally(closure) 函数,但我们不确定用于闭包或比特广播的类型。
谢谢你。