1

以下は、実行時にクラスにメソッドを追加するための便利な方法を提供します。

imp_implementationWithBlock((void*) objc_unretainedPointer(^(id me, BOOL selected)

その後、class_addMethod()を使用してメソッドを追加できます。これらの実装は最終的にキャッシュされ、ファストトラックメソッドディスパッチシステムを使用しますか?

4

1 に答える 1

2

そうしないと、繊細で一貫性のある美しいObjective-Cランタイムが複雑になるため、私の直感はイエスです:)

また、このリンク-> http://kevin.sb.org/2006/11/16/objective-c-caching-and-method-swizzling/

かなり自信があるようです。class_addMethodを呼び出すと、これらはすべてクラス内のメソッドになります。私の知る限り、私が間違っている場合は訂正してください。コンパイルされたものと区別する方法はありません。

于 2013-02-01T05:24:15.480 に答える