問題タブ [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 に答える
562 参照

ios - AudioSessionAddPropertyListener をスウィズルする方法

私のプロジェクトには、オーディオ プロパティ リスナーを追加するライブラリがあります。私は本当にそれをブロックできるようにする必要がありますが、ソースコードがありません.

以前、NSNotificationCenter の addObserver メソッドのスウィズルを行ったことがあります。AudioSessionAddPropertyListener についても同じことを行うのを手伝ってもらえますか? 呼び出しに追加しようとしているメソッドがホワイトリストと一致しない場合、それをブロックしたいと考えています。それ以外の場合は、元のメソッドを呼び出します。

load 関数をオーバーロードする必要があるクラスがわかりません。Audio.h の中を見ています。私がやろうとしていることを見ることができるように、いくつかの疑似/本物/badlyNamed コードを追加しています。

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

objective-c - UITableViewDelegate の didSelectRowAtIndexPath: をスウィズルできますか?

問題はこれです:

多くの tableView を持つ既存の大きなアプリ全体で didSelectRowAtIndexPath の分析を取得できる必要があります。

これについて最初に考えたのは、didSelectRowAtIndexPath: でメソッドのスウィズリングを行うことですが、元の didSelectRowAtIndexPath 実装でアクセスされたものに応じて、「認識されないセレクターがインスタンスに送信されました」というメッセージでアプリがクラッシュします。

UIViewController カテゴリでこれを達成しようとする方法は次のとおりです。

これは達成できますか?もしそうなら、私は何を間違っていますか?

ありがとう!

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

objective-c - メソッドスウィズリングのスレッドセーフ

メソッドのスウィズリングは次のシングルトン初期化子で使用されていますが、スウィズリングのスレッド セーフについてはわかりません。

スレッドが別のメソッドによってスウィズルされようとしているメソッドを呼び出そうとしている間に何が起こるでしょうか? そのメソッドを呼び出そうとしているスレッドがある間、いつでもスウィズルしても安全ですか? 公式の参考文献で答えてください。ありがとう

https://gist.github.com/MSch/943369

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

ios - アプリケーションをスウィズルできますか:didReceiveRemoteNotification:

現在、AppDelegate の application:didReceiveRemoteNotification: をスウィズルする必要がある製品に取り組んでいます (appDelegate 自体で新しいメソッドを呼び出したくありません)。

問題は、スウィズリングが機能しないということです。以前に何度かメソッドを入れ替えて成功しましたが、今回は、置き換えの実装が単に呼び出されていません。これらはアプリケーションではなくシステムによって呼び出されるため、appDelegateのメソッドの特定性が原因であるかどうか疑問に思っていました。

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

objective-c - UIAlertView の alloc メソッドのこのスウィズルが再帰を引き起こすのはなぜですか?

私はスウィズルで遊んでいますが、これを理解することはできません。私の割り当てスウィズルは次のようになります。

コール スタックで繰り返し呼び出される NSLog ステートメントで一時停止すると、次のように表示されます。

timeZoneWithName: がカスタム alloc メソッドを呼び出しているようです。alloc がスウィズルされていない場合、明らかに再帰はありませんが、ここで何が起こっているのか混乱しています。

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

ios - プライベート クラスのメソッドをスウィズルする方法

別のクラスの実装への追加として、プライベート クラス (.m 内で宣言および定義されている) があり、そのプライベート クラスを内部で使用しています。

そのプライベート クラスのメソッドの 1 つをスウィズルしたいと思います。

私はカテゴリを定義し、いつものことをしました:

問題は、私の実装が明らかにこのプライベート クラスについて何も知らず、self がカテゴリを追加するクラスを参照していることです。そのため、元の実装を呼び出す方法がなく、一般にプライベート クラスを操作する方法がありません。

これに取り組むための適切なアプローチは何ですか?