3

サードパーティのフレームワークを使用した非常に大きなプロジェクトがあり、メソッドの入れ替えを無効にして、サードパーティのフレームワークがデフォルトの予期される動作を台無しにしないようにしたいと考えています。出来ますか?プロジェクト設定にいくつかのフラグがありますか?

4

1 に答える 1

1

これを無効にするオプションはありませんが、NSObject からのサブクラス化を回避すれば安全です。すべてのライブラリが入れ替わるのを防ぎたい場合は、そのコアメソッドをオーバーライドできます。

public func class_addMethod(_ cls: Swift.AnyClass!, _ name: Selector!, _ imp: IMP!, _ types: UnsafePointer<Int8>!) -> Bool

public func method_exchangeImplementations(_ m1: Method!, _ m2: Method!)

このような

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
}

私はそれをお勧めしませんが、試してみてください。

于 2016-10-11T08:35:32.957 に答える