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

objective-c - Objective C - IMP と関数ポインタの違いは何ですか?

私は最近、スウィズルを行う必要があるプロジェクトを開始しました。

多くのチュートリアルを経た後、「実装と関数ポインターの違いは何ですか?」という質問がありました。

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

ios - メソッド [load] は [super load] を呼び出す必要がありますか

多くのメソッドがそのスーパー クラス メソッドを呼び出す必要があり、一部のメソッドは必要ないことを知っています。

メソッドのスウィズリングについてsthについて調べています。ロードメソッドで初期化されており、チュートリアルにはありません[super load]

それが間違っているのか、それとも電話する必要がないのか 疑問に思っています[super load]

ちなみに、この方法はナビゲーションの破損を修正するために使用されます。

たまたま問題が再発することがあり、デバッグしましたが、それはスレッドに関するものだと思います。そのため、システム メソッドに sth を追加するために、このスウィズリングを作成します。

ナビゲーションの破損の問題またはこのメソッドのスウィズリングについて教えていただければ、私も非常に感謝しています。

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

ios - コア データのデバッグ __NSCFSet addObject nil 例外

単体テスト中に Core Data スレッドで例外がスローされ、次のメッセージが表示されます。

CoreData: エラー: 重大なアプリケーション エラーです。コア データの変更処理中に例外がキャッチされました。これは通常、NSManagedObjectContextObjectsDidChangeNotification のオブザーバー内のバグです。-[__NSCFSet addObject:]: userInfo (null) で nil を挿入しようとしました

原因を特定しようとしていますが、NSManagedObjectContextキューで発生しているため、スレッドには独自のコードのスタック トレースがありません。

-[__NSCFSet addObject:]とにシンボリック ブレークポイントを設定しまし-[NSManagedObjectContext processPendingChanges]たが、そこで停止している間は状態を確認できず、どのオブジェクトが問題を引き起こしているかを判断するのに役立ちました。

私が思いついた次のステップは、swizzling を試し-[__NSCFSet addObject:]て独自の実装を追加することでした。これにより、引数が nil の場合にのみ停止できました。セットが空でないことを願っています。nil を挿入する前にその内容を確認することで、より多くの情報を取得できます。ただし、プライベートクラスなので、スウィズルするのに苦労しました。

上記のアプローチ、または私が考えていなかったアプローチを使用して、例外の原因に関する詳細情報を取得するにはどうすればよいですか?

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

ios - SDK から appdelegate メソッドを変更する

こんにちは、みんな。

アプリがバックグラウンドに移行するときにイベントに登録する SDK を開発しようとしています [バックグラウンド フェッチや大幅な場所の変更など]。そのため、appDelegate メソッドでコードを記述する必要があります

と:

問題は、ホスティング アプリ アプリのデリゲートを損傷することなく、どうすればそれを行うことができるかということです。

分類してみましたが、そのためには appDelegate を知る必要があります

メソッドのスウィズリングについて少し読みましたが、 appdelegate メソッドを変更して実行しない方法がわかりません。

誰かが物事を明確にするのに役立つサンプルコードまたはリンクの例を提供できれば、それは大歓迎です。

ありがとう。

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

ios - スウィズルで UIAlertView を変更する

最近、会社のモバイル アプリに統合するためのプライベート ハードウェア SDK を受け取りました。一部の不透明なメソッド呼び出しの結果としてa を使用していることを除いて、すべてがうまく機能しUIAlertView、私の設計チームはこれをブランド化したいと考えています。SDK のソース コードにアクセスできません。UIAlertViewすべての機能を保持UIAlertViewし、アプリの外観とよりブランド化/一貫性を持たせるために外観を変更するだけで安全にスウィズルできる方法はありますか? もしそうなら、私はオーバーロードdrawRectするか、何か他のものを使いますか? また、ラベルの名前が何であるかを調べて、必要なUIAlertViewサイズ、形、色でラベルを描画できるようにするにはどうすればよいでしょうか?

追加の詳細については、アプリは現在使用していません。理論的には、スウィズリングは、このクローズド ソース SDK で何が起こっているかにのみ影響しますUIAlertViewUIAlertViewController

0 投票する
5 に答える
689 参照

ios - How to override NSDate description? ..Method Swizzling?

How can I call

and instead of receiving the usual response, obtain the one I have in a function named getString() that is part of an extension of NSDate.

Here's my extension:

Please, note that I don't want to just use:

I want to override original description of this class.

UPDATE:

So, everything looks like the only option is Method Swizzling, if even possible.

Anyone interested in the bounty?

HEADS UP

I'm doing this just for personal growth and to get to understand the concept, not planning on shipping an App using it in this scenario, not even sure right now in what scenarios I could be using it.

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

objective-c - 同じ名前 (NSNotificationCenter postNotificationName) のメソッドを入れ替える方法は?

私はメソッド スウィズリングにかなり慣れていないので、NSNotificationCenter への誤った呼び出しの結果である可能性が高い問題のトラブルシューティングに使用したいと考えています。これを行うには、NSNotificationCenter の postNotification メソッドへの各呼び出しをログアウトするためにスウィズルしたいと考えています。私が抱えている問題は、名前の始まりが同じである2つのメソッドがあることです(ここでは、それらの実装が入れ替わっています):

次のような呼び出しでこれらを個別のセレクターとして識別するにはどうすればよいですか?

両方ともフォームを持っていませんか?

私は何が欠けていますか?

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

objective-c - ARC で保持されたオブジェクトを暗黙的に返すスウィズリング メソッド

たとえば、ARC の下で次のコードを考えてみましょう。

このコードでは、元のメソッドはメソッド ファミリcopyWithZone:に属しているため、保持されたオブジェクトを暗黙的に返します。copyしかし、私myCopyWithZone:はそうではありません。

クラッシュが予想されますが、このコードは正常に動作しているようです。もちろん、混乱を避けるためにメソッドの名前を変更できます。しかし、ボンネットの下で正確に何が起こっているのか興味がありますか?

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

ios - NSURLConnection クラスの init メソッドをスウィズルする方法

NSURLConnection クラスの init init メソッドをスウィズルしたいのですが、このコードを試してみましたが、うまくいかないようです

そして、ここに私がView Controllerから開始しているリクエストがあります