問題タブ [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.
ios - 現在のアプリのネットワーク アクセスをプログラムで制限する
アプリのどの部分も、静的ライブラリでさえも不要なインターネット トラフィックを生成できないように (Apple のレビュー プロセスによって承認されるように)、スウィズルまたは何かを行うことは可能ですか? また、方法があれば教えてください。
objective-c - iOS 8 で __NSCFURLSession クラスを取得できません
私はこのようなコードスニペットを持っています
c = NSClassFromString(@"__NSCFURLSession");
iOS 7シミュレーターを使用して、cを取得できました
c クラス __NSCFURLSession 0x00000001113a2ce8
しかし、iOS 8の下では、私は得ています
c クラス 0x0 0x0000000000000000
誰かがこれに対する解決策を持っていますか?
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 に適していないことを読みましたが、それらが受け入れられているケースも読みました。
ios - アプリ内のすべての UIButton タップを「キャプチャ」する方法はありますか?
ユーザーがタップしているボタンを追跡できるようにしたいと考えています。アプリ内のすべてのボタンタップを「キャプチャ」または「ログ」する方法はありますか?
メソッドのスウィズリングについて考えていましたが、実際にはそれには入りません。
objective-c - ISA スウィズリングと「super」の呼び出し
次のクラス階層を想定します。クラスA
は公に宣言されています:
クラス_B
は のプライベート サブクラスですA
:
クラス のオブジェクトは、 のインスタンスを作成して返すA
ファクトリ メソッド を使用してのみ作成する必要があると仮定します。createInstance
_B
A
のインスタンスの機能をインスタンスごとに強化したいと考えています。そこで、次のことを達成するために ISA スウィズルを実行することにしました。
そして、NSObject
カテゴリに対して次のメソッドを使用して ISA スウィズリングを行います (ここに示されている単純な実装)。
[super a];
すべてが機能しているように見えますが、期待どおりに動作しないことに気付きました。-[A a]
実行時のスーパークラスが実際に_B
.
への呼び出しを次のコードに置き換えるとsuper
機能しますが、見苦しく、開発者による知識と作業が必要です。
呼び出し時にコンパイラは何を発行し、super
この発行されたコードを変更する方法はありますか?
ios - すべてのサブクラスの Swizzle メソッド
私はCLLocationManager
メソッドを持つクラスを持っていsetDelegate:
ます。また、閉じたフレームワークに継承クラスがあります。setDelegate:
このクラスとすべての継承の実装を交換したい。
しかし、私はサブクラスを取得しませんsfl_classGetSubclasses
。これが最初の問題です。2番目: サブクラスの名前を知っていて、継承されたクラスでメソッドを交換しようとします。
しかし、アプリケーションは実行時に落ちます。クローズド フレームワークを使用するまでは、exchange メソッドは完全に機能します。
ios - Objective c のメソッド スウィズリングとカテゴリの違い
私は obj c Method Swizzlingで行われたメソッドの入れ替えと、メソッドの入れ替えを使用する危険性を理解していたので、メソッドの入れ替えとカテゴリを使用したメソッド実装の上書きを比較せずにはいられませんでした。どちらも、定義済みのフレームワーク メソッドの機能をオーバーライドするのに役立ちます。では、2つに違いはありますか、それとも同じ意味で使用できますか?
ios - iOSでUIApplicationをスウィズルするには?
Swizzle UIApplication
特に " " メソッドをクラス化する必要がありapplication:handleOpenURL:
ます。UIApplication のカテゴリ クラスを追加しました。独自のメソッドを元のメソッドと交換しましたが、トリガーされませんでした。Swizzle クラスはアプリの起動時に初めて呼び出されましたが、swizzle メソッドはトリガーされませんでした。参考までにコードを添付しました。
誰か私の一日を救ってくれませんか? 「RSSwizzle」などのプライベート ライブラリを使用してみましたが、助けにはなりませんでした。