私はサードパーティ製のフレームワークを持つ非常に大きなプロジェクトを持っており、サードパーティ製のフレームワークがデフォルトの予想される動作を乱していないことを確認するためにメソッドのスウィズルを無効にしたいと考えています。 可能ですか?プロジェクト設定にいくつかの旗がありますか?迅速なプロジェクトでメソッドスウィズルを無効にすることはできますか?
答えて
これを無効にするオプションはありませんが、NSObjectからサブクラス化することを避けると安全です。あなたはこの
public func method_exchangeImplementations(_ m1: Method!, _ m2: Method!) {
}
public func class_addMethod(_ cls: Swift.AnyClass!, _ name: Selector!, _ imp: IMP!, _ types: UnsafePointer<Int8>!) -> Bool
{
return false
}
のようにそれのために、すなわち
public func class_addMethod(_ cls: Swift.AnyClass!, _ name: Selector!, _ imp: IMP!, _ types: UnsafePointer<Int8>!) -> Bool
と
public func method_exchangeImplementations(_ m1: Method!, _ m2: Method!)
をコアメソッドをオーバーライドすることスウィズルから任意のライブラリを防ぎたい場合は 私にはありませんあなたがそれを試してみるかもしれないと示唆しています。
非常に興味深い。システムのライブラリ(Foundation、UIKitなど)のどれも現在の実装でうねりに頼っていないと確信していますか?それはAppleの厄介な動きだろう(結局のところ、彼らはコードを所有している:そのようなハッキングに繰り返されるのではなく、必要な部分を書き直すことができる...)。しかし、決して確実にすることはできない。 –
Swizzlingは危険でおそらくUIKitりんごのようなフレームワークはそれを使用しません。あるいは、おそらく彼らは公開されていない内部的なスウィズル機能を持っています(hehhという仮定はありません)。 私はいつもスウィズルに頼っているので、実際のプロジェクトでそれを試してみませんでしたが、あなた(または誰か)が試して結果を書いてくれれば素晴らしいでしょう。 –
私はその長さに行かない:)私はそれを無効にするフラグがあるかどうかを知りたかったので、そのようなフラグがないという私の前提を確認した。ありがとうございました –
- 1. iOS 9 Appsを送信できません(迅速なサポートが無効です)
- 2. 私は自分でこのプロジェクトを使用できるようにしたいと思い迅速なプロジェクトで
- 3. 迅速に場所を無効/有効にする方法
- 4. 迅速に機能をタイプにすることはできますか?
- 5. 通知警告を無効に迅速
- 6. 私は迅速にメールとSMSを送ることができますか?
- 7. 配列を迅速に混合することはできますか?
- 8. 迅速なプロジェクトでFirebaseをCocoapod経由でインポートできない
- 9. xcodeプロジェクト(xcodeproj)を迅速なプレイグラウンド(.playground)形式に変換できますか?
- 10. 迅速なプロジェクトでVideoPlayerを使用
- 11. CoreNFCで迅速なプロジェクトXcode 9ベータ版でインポートできない
- 12. iOSの私のプロジェクトで迅速な3
- 13. SQLALCHEMY_TRACK_MODIFICATIONSを無効にすることはできますか?
- 14. control-Cを無効にすることはできますか?
- 15. フィルタテキストを無効にすることはできますか?
- 16. [アプリケーションエラー]ダイアログボックスを無効にすることはできますか?
- 17. パラメータパターンマッチングを無効にすることはできますか?
- 18. コントロール:HoverButtonを無効にすることはできますか?
- 19. a:visitedを無効にすることはできますか?
- 20. ViewerJS:ボタンを無効にすることはできますか?
- 21. 迅速に '()'タイプとは何ですか?
- 22. TabBarの無効なアイテムの色を迅速に変更するにはどうすればいいですか?
- 23. 1つの迅速なプロジェクトに2つのヘッダファイルを追加することは可能ですか?
- 24. application.cfcでJ2EEセッションを有効/無効にすることはできますか?
- 25. PythonでUSBデバイスを有効/無効にすることはできますか?
- 26. iPhoneエコーキャンセル、無効にすることはできますか?
- 27. 私の迅速なプロジェクトにDocusign APIを追加するには
- 28. 迅速なコンテキストは何ですか?
- 29. メソッドのクロージャはインスタンスを迅速に保持していますか?迅速で
- 30. アンドロイドのカスタムビューでテキストのみを無効にすることはできますが、背景イメージを無効にすることはできますか?
あなたのクラスがNSObjectから継承する場合、これを行う方法はありません。すべてのUIKitクラスは、基本的にNSObjectから継承されます。あなた自身のプロジェクトで定義したクラスについては、NSObjectから継承するべきではありません。この条件でのみ、スウィズルが機能しません。 –
助けを得てください。 https://github.com/uraimo/SwizzlingInSwift –