NSClassFromString 関数など、Objective-C Foundation 関数の実装を置き換える方法はありますか? 私はもちろんclass_replaceMethodを認識していますが、クラス メソッドに対してのみ機能し、一般的な関数に対しては機能しないようです。
1 に答える
3
これらの関数は単なる C 関数および/またはマクロ (Objective C は C 上に構築されています) であり、C 関数を置き換えることはできません。
ただし、 a を使用しdefine
て名前をマスクできます。
Class MyNSClassFromString( NSString* blah ) {
return whatever;
}
#define NSClassFromString MyNSClassFromString
その時点から、呼び出しNSClassFromString(@"hi")
はカスタム関数を呼び出します。これにはいくつかの制限があることに注意してください: 上記のdefine
コード (または使用しているライブラリ内のコード) は変更されません。多くの場合、インテリセンスが不満になります。NSClassFromString
最初にマクロとして定義されている場合は機能しません。場所 (#undef NSClassFromString
その場合、定義の前に追加できます)。
一般に、これはお勧めしませんが、本当にやりたいのであれば、可能性はあります。
于 2013-08-21T18:33:42.177 に答える