0

Objective-C には、swift にビットキャストしたいメソッドがあり、ほとんどのメソッドのタスクを完了しましたが、ボイドの処理方法に行き詰まっています。迅速なコードは次のとおりです。

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) 関数を作成することが目標ですが、クロージャーまたはビットキャストに使用するタイプが不明です。

ありがとうございました。

4

0 に答える 0