私はObj-cランタイムリファレンスにあるこのメソッドを試しています
BOOL class_addMethod(Class cls, SEL name, IMP imp, const char *types)
次のような新しいメソッドを追加したいと思います。
- [AClass drawWithFrame:(NSRect)rect inView:(id)view]
これまで、C関数を作成しました。
void drawWithFrameInView(id this, SEL this_cmd, NSRect frame, id view){
...
}
今、私はする準備ができています:
BOOL success = class_addMethod(NSClassFromString(@"AClass"),
@selector(drawWithFrame:inView:),
(IMP)drawWithFrameInView,
"v@:@:@:");
しかし、success
決して「はい」ではありません。私は、より単純な署名を持つメソッドで同じアプローチを試しましたが、うまくいきました。したがって、問題は最後のパラメータだと思います。"v@:@:@:"
この場合、新しいメソッドを機能させるには何を渡す必要がありますか?