1

例として、このメソッドを見てみましょう:

+ (void)animateWithDuration:(NSTimeInterval)duration
                 animations:(void (^)(void))animations
                 completion:(void (^)(BOOL finished))completion

animatedWithDuration:animations:completion:メソッド自体の別の実装または変更された実装をスウィズルするのは簡単です。代わりに、完了ブロックに対してこれを行うことに興味がある場合はどうなりますか?

4

2 に答える 2

2

他の人が指摘しているように、「スウィズル」はメソッドの実装を変更することを指すために使用されるため、用語が間違っていますが、それは重要ではありません。

あなたがやりたいことは次のいずれかだと思いますanimatedWithDuration:animations:completion:。呼び出し元が提供するものとは異なるブロックを渡します。または、呼び出し元が提供するブロックを独自のブロックでラップします。これは、ほぼ同じことになります。

私の推測が正しければ、呼び出し元が提供したブロックのラッパーである可能性のある、選択した元の通過ブロックを呼び出すメソッドに置き換えるメソッドを入れ替えることができます。

HTH

于 2015-05-12T23:39:10.203 に答える