問題タブ [method-swizzling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
156 参照

objective-c - メソッド スウィズリング - この実装内のプロパティ マッピングについて説明してください

私はオープン ソースのプル ツー リフレッシュ コントロールを調べていましたが、次のように UIViewController カテゴリのライフサイクル メソッドを切り替えます。

呼び出されたときviewWillAppearに上記のメソッドにマップされ、その呼び出し[self INBPullToRefreshView_viewWillAppear:animated];は元の にマップされることがわかりviewWillAppearます。

ただし、次のことは何をしますか?


コントロールのgithub ソースは次のとおりです。

0 投票する
2 に答える
1013 参照

objective-c - メソッドスウィズリングでのdispatch_onceの使用

NSHipter のメソッド スウィズリングに関する記事では、「スウィズリングは常に dispatch_once で実行する必要があります」と書かれています。+load はクラスごとに 1 回しか発生しないため、なぜこれが必要なのですか?

0 投票する
3 に答える
7221 参照

unit-testing - SwiftでNSDateをモックする方法は?

いくつかの日付計算をテストする必要がありますが、そのためにNSDate()は Swift でモックする必要があります。アプリ全体が Swift で書かれているので、テストも書きたいと思います。

メソッドの入れ替えを試みましたが、うまくいきません (または、何か間違ったことをしている可能性が高いです)。

テスト:

ただしdate、常に現在の日付です。

0 投票する
1 に答える
2021 参照

ios - プロトコルのメソッド スウィズリング

textFieldDidBeginEditing:やのようなプロトコル メソッドを Swizzle できるようにしたいtableView:didSelectRowAtIndexPath:。これはどのように行うことができますか?

0 投票する
2 に答える
783 参照

ios - Objective-Cメソッドの完了ブロックにスウィズルする方法は?

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

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

0 投票する
2 に答える
698 参照

ios - プロジェクトで WYPopover を使用すると UINavigationControllerDelegate メソッド呼び出しがクラッシュする

私は WYPopoverController を組み込んだアプリに取り組んでおり、本来あるべき場所でうまく機能します。組み込みのプッシュ/ポップではなく、2 つのコントローラー間にカスタム アニメーションを追加したいと考えています。

FROM および TO コントローラーを含むナビゲーション コントローラーでは、WYPopoverController に関連することは何もしません。コントローラーの FROM および TO でも同様です。

実際のアニメーションを処理する非常にシンプルなアニメーター クラスであるナビゲーション コントローラー デリゲートを実装しました。

アニメータークラス:

FROM コントローラーで、ナビゲーション デリゲートを初期化します

(コレクション)セルをタップしてTOコントローラーに移動したい時点まで、すべてがコンパイルされて実行されます。その時点で、アプリがエラーでクラッシュします: -[CALayer navigationController:animationControllerForOperation:fromViewController:toViewController:]: unrecognized selector sent to instance 0x7fc72e53e970

ブレークポイントを追加し、sizzled_pushViewController:animated:UINavigationController のメソッド内に行き着きました。正直なところ、私はこの問題にどのようにアプローチすればよいかわかりません。

スクリーンショット 2015-05-21 at 15 48 04

0 投票する
3 に答える
83 参照

ios - よりクリーンなクラス実装を維持するためのメソッド スウィズリング

特に、チェックして制御するこのクラスの多くのメソッドに異なる実装を追加する「チュートリアル状態」を追加したため、アプリのviewControllerの1つがかなり大きくなっている状況にあります

したがって、私の質問は、これがメソッドのスウィズリングの適切な使用例であるかどうかです。これらのメソッドのさまざまな実装を別のカテゴリに入れ、必要に応じてスウィズルすることができます。デフォルトの実装のコード量を減らすのに役立つかもしれません。他のテクニックのコメントや提案は大歓迎です。

0 投票する
1 に答える
572 参照

ios - iOSでUIApplicationをスウィズルするには?

Swizzle UIApplication特に " " メソッドをクラス化する必要がありapplication:handleOpenURL:ます。UIApplication のカテゴリ クラスを追加しました。独自のメソッドを元のメソッドと交換しましたが、トリガーされませんでした。Swizzle クラスはアプリの起動時に初めて呼び出されましたが、swizzle メソッドはトリガーされませんでした。参考までにコードを添付しました。

誰か私の一日を救ってくれませんか? 「RSSwizzle」などのプライベート ライブラリを使用してみましたが、助けにはなりませんでした。