問題タブ [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.
objective-c - Objective-C メソッドのスウィズリング パフォーマンス
Objective-Cでメソッドスウィズリングを使用すると、どのようなパフォーマンスペナルティが発生しますか?
メッセージのスウィズリングで無効になるコンパイラの最適化があるとすれば、それはどれですか?
ios - EXC_BAD_ACCESS 時のスウィズル popViewControllerAnimated:
コントローラー間のナビゲーションをログに記録するために、-popViewControllersAnimated: メソッドのスウィズリングを使用します。また、EXC_BAD_ACCESS で奇妙なクラッシュが発生することもあります。その理由は何ですか?
android - Android には iOS メソッドのスウィズリングのようなものがありますか (PhoneGap プラグインの初期化用)?
サードパーティのネイティブ SDK をラップする iOS と Android の両方の PhoneGap プラグインを作成しています。AppDelegate
iOS の場合、これらのライブラリを初期化する目的で、swizzling を使用して に動作を追加することができました。
今、私は Android でも同じことをする必要があります。例として、私は現在AppsFlyer SDK を使用していますが、これはドキュメントが初期化する方法です:
PhoneGap プラグインでこのようなことを行うためのテクニックはありますか? Android Studio プロジェクト自体をソース管理下に置くことなく、プロジェクトを最初からビルドできる必要があります。
ありがとう!
objective-c - 保持されていたものをスウィズルする
こんにちは、よくわかりませんretain
。
ここにこのコードがあります:
私はそれをスウィズルしようとしているので、彼らが名前付きの画像を要求するたびにNSApplicationIcon
、カスタムアイコンを付けます. 元のアイコンが戻ってくることがあります。この保持のせいだと思いますか?私は正しいですか?リテインをクリアすることはできますか?これにより、スウィズルが現在のように 80% しか機能しないのではなく、100% 機能するようになります :(
私はここで読みましたretain
が、上記の状況を助けるためにそれを適用することができませんでした: http://www.cocoawithlove.com/2010/06/assign-retain-copy-pitfalls-in-obj-c.html
非常に具体的には、ここでこれをスウィズルしようとしています: https://dxr.mozilla.org/mozilla-central/source/widget/cocoa/nsMacDockSupport.mm?offset=200#140
ios - メソッドの入れ替えが機能しない
メソッドのスウィズリングを利用したいのですが、簡単な例でさえうまくいきません。概念が何であるかを誤解している可能性がありますが、私が知る限り、メソッドの実装を入れ替えることができます。
A と B の 2 つのメソッドが与えられた場合、A を呼び出すと代わりに B が実行されるように、それらの実装を入れ替えたいと思います。スウィズリングの例をいくつか見つけました ( example1およびexample2 )。これをテストするクラスを含む新しいプロジェクトを作成しました。
次に、それを実行しようとします
予想される出力は「B」ですが、「A」はまだ印刷中です。私のコードからわかるようIMP
に、スウィズル操作の前後にそれぞれのプリントを含めました。これらのプリントは、交換が行われていることを示していますが、出力は同じままです。
出力:
これらの変更を有効にすることに関して、私が見逃しているものはありますか?
PS。現在XCode 7.0.1を使用しています
ios - Objective-C、iOS 9 の高度なメソッド スウィズリング?
質問は簡単です。いつもと同じことが必要です-元のメソッドを私のものに置き換える方法はありますが@selector(presentViewController:animated:completion:)
、iOS9では? 実際のデバイスではなく、iOS9 シミュレータでのみ動作します。
はい、このコードが呼び出されますが、取得しEXC_BAD_ACCESS
ます。
それをテストするために、「Master-Detail テンプレート」からテスト アプリを作成し、ボタンを追加し、次のコードを追加しました。
更新しました
NSHipsterのサイトにもほぼ同じコードが書かれています
更新しました
警告!このバグは非常にランダムなデバイスで再現されます (私の場合は iphone5 + ios9.0 ですが、他のユーザーはより新しいデバイスと iOS9.1 を使用しています)。
ios - StaticString を使用した Swift でのスウィズリング
StaticString パラメータを含む Swift 関数をスウィズルしようとしています。
これが私が試したものです:
ただし、これは機能しません。str の型を String に変更すると、適切にスウィズルできます。StaticString 型パラメーターを使用して関数をスウィズルする機会がある人は誰でも助けてくれますか?
ありがとう
objective-c - Objective-Cでのメソッドスウィズリングの適切な方法
swizzling
現在、Objective-Cでメソッドを試していますが、質問があります。私はスウィズルをメソッド化する適切な方法を理解しようとしており、オンラインで調査した後、この NSHipster の投稿に出くわしました
:
投稿では、著者はサンプルコードを入れ替えるメソッドをいくつか持っています。著者が何をしているのかをよりよく説明してくれる人を探しています。特に、didAddMethod
論理について混乱しています。なぜ著者は直接swapping/exchanging
メソッドの実装だけではないのですか? これに関する私の唯一の理論は、まだviewWillAppear:
追加されていない可能性があるということですUIViewController's method
dispatch_table
。特に、カテゴリが最初にメモリにロードされている場合はUIViewController
...これが理由ですか? かなり奇妙に思えますか?もう少し洞察/明確さを探しているだけです、ありがとう:)
c# - C# メソッドの Exchange 実装
Objective-C でのメソッド スウィズリングのように、C# でメソッドの実装を交換することは可能ですか?
そのため、実行時に既存の実装を (外部ソースから、たとえば dll を介して) 自分のものに置き換える (または別の実装を追加する) ことができます。
私はこれを検索しましたが、価値のあるものは何も見つかりませんでした。