問題タブ [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 投票する
1 に答える
109 参照

ios - 無限ループに陥らずに NSError init をスウィズルする方法

NSErrorスウィズリング時に元のinitメソッドを呼び出す方法は?

私の現在の実装

0 投票する
0 に答える
71 参照

objective-c - Objective-C でメソッド呼び出しごとにラッパーを生成することは可能ですか?

私は多くのクラスを持つプロジェクトを持っています。実行時に各セレクターの呼び出しを (stderr などに) ログに記録したいと考えています。
私の主な要件は、既存のコードを変更することではないため、各呼び出しの開始時に関数のパラメーターをログに記録することはできません。

プログラムの実行中に何らかのメソッドが呼び出された場合、たとえば

私はそれを次のようなものに置き換えたい:

出来ますか?

メソッドのスウィズリング、KVO、フォワードメッセージングについて読んだことがあります。

メソッドのスウィズリングを使用した現在のアプローチでは、無限の再帰が発生します。

block3残念ながら、実行時に 1 つまたはいくつかのメソッドを生成することは不可能です。ありますNSSelectorFromStringが、ありませんImplementationFromString

UPD
DTrace util を調べましたが、非常に強力なようですが、私のニーズには合いません。Mac OS で SIP を無効にする必要があり、iOS では不可能か、ジェイルブレイクされたデバイスでは可能です。

メソッドのインターセプトに必要なのは、デバッグとプロダクション ビルド モードの両方で安定したカスタム「フレームワーク」を作成することです。

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

ios - フレームワークからAppDelegateのdidReceiveRemoteNotificationをスウィズルする方法

iOS アプリ (ポッド) のフレームワークを開発しています。スウィズルしたい

私のフレームワークで定義されたメソッドで。これは私のコードです:

しかし、コードを実行すると、originalMethod の値が nil のように見えるので、

nil を返します。私が間違っていることは何ですか?(私が言ったように、私はフレームワークを開発しているので、私は AppDelegate にアクセスできないことを考慮してください)

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

ios - UIImage.init(named:) のスウィズリングは、インスタンス メソッドを取得するときに nil を返します

初期化関数をスウィズルしよUIImageうとしていますが、インスタンス関数を取得しようとすると nil が返されます。何か案が?