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

ios - 現在のアプリのネットワーク アクセスをプログラムで制限する

アプリのどの部分も、静的ライブラリでさえも不要なインターネット トラフィックを生成できないように (Apple のレビュー プロセスによって承認されるように)、スウィズルまたは何かを行うことは可能ですか? また、方法があれば教えてください。

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

objective-c - iOS 8 で __NSCFURLSession クラスを取得できません

私はこのようなコードスニペットを持っています

c = NSClassFromString(@"__NSCFURLSession");

iOS 7シミュレーターを使用して、cを取得できました

c クラス __NSCFURLSession 0x00000001113a2ce8

しかし、iOS 8の下では、私は得ています

c クラス 0x0 0x0000000000000000

誰かがこれに対する解決策を持っていますか?

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

ios - NSOutputStream の write:MaxLength を入れ替えることができません:

NSOutputStream の実際の書き込みが発生する前に、カスタム データを書き込む必要があります。

スウィズリング コードを実行するために、以下を含むカテゴリ NSOutputStream(SwizzleWrite) を作成しました。

次に、Inout & Output ストリームを作成します: CFStreamCreatePairWithSocketToCFHost(kCFAllocatorDefault, hostRef, 80, &readStream, &writeStream);

しかし今、コントロールが handleEvent: delegate に到達すると、具体的には[outputStream write:rawstring maxLength:sizeof(rawstring)];に達します。、私はswizzledWrite:maxLengthでそれを取得しません:

ここで何が間違っていますか?

PS: Apple のスウィズリング メソッドは Appstore に適していないことを読みましたが、それらが受け入れられているケースも読みました。

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

ios - アプリ内のすべての UIButton タップを「キャプチャ」する方法はありますか?

ユーザーがタップしているボタンを追跡できるようにしたいと考えています。アプリ内のすべてのボタンタップを「キャプチャ」または「ログ」する方法はありますか?

メソッドのスウィズリングについて考えていましたが、実際にはそれには入りません。

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

objective-c - ISA スウィズリングと「super」の呼び出し

次のクラス階層を想定します。クラスAは公に宣言されています:

クラス_Bは のプライベート サブクラスですA:

クラス のオブジェクトは、 のインスタンスを作成して返すAファクトリ メソッド を使用してのみ作成する必要があると仮定します。createInstance_B

Aのインスタンスの機能をインスタンスごとに強化したいと考えています。そこで、次のことを達成するために ISA スウィズルを実行することにしました。

そして、NSObjectカテゴリに対して次のメソッドを使用して ISA スウィズリングを行います (ここに示されている単純な実装)。

[super a];すべてが機能しているように見えますが、期待どおりに動作しないことに気付きました。-[A a]実行時のスーパークラスが実際に_B.

への呼び出しを次のコードに置き換えるとsuper機能しますが、見苦しく、開発者による知識と作業が必要です。

呼び出し時にコンパイラは何を発行し、superこの発行されたコードを変更する方法はありますか?

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

ios - すべてのサブクラスの Swizzle メソッド

私はCLLocationManagerメソッドを持つクラスを持っていsetDelegate:ます。また、閉じたフレームワークに継承クラスがあります。setDelegate:このクラスとすべての継承の実装を交換したい。

しかし、私はサブクラスを取得しませんsfl_classGetSubclasses。これが最初の問題です。2番目: サブクラスの名前を知っていて、継承されたクラスでメソッドを交換しようとします。

しかし、アプリケーションは実行時に落ちます。クローズド フレームワークを使用するまでは、exchange メソッドは完全に機能します。

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

ios - Objective c のメソッド スウィズリングとカテゴリの違い

私は obj c Method Swizzlingで行われたメソッドの入れ替えと、メソッドの入れ替えを使用する危険性を理解していたので、メソッドの入れ替えとカテゴリを使用したメソッド実装の上書きを比較せずにはいられませんでした。どちらも、定義済みのフレームワーク メソッドの機能をオーバーライドするのに役立ちます。では、2つに違いはありますか、それとも同じ意味で使用できますか?

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

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

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

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