1 つの質問について混乱しています。例を参照してください。
-(void)DIYLog:(NSString *)format, ...
{
NSLog(...);
}
それは単なる楽しみのための例です。NSLog のパラメーターとして "..." を渡すことができないことは誰もが知っています。だから、ある「変数パラメーター」を別のパラメーターに渡すことに興味があります。パラメータがレジスタまたはスタックによって渡されることは既に知っていますが、重要な点は、Objective-C または C でどのように実装できるかです。
私はあなたに誤解を与えると思います。NSLog は、説明する単なる例です。もう一つ作りましょう。パラメータをid objc_msgSend(id self, SEL op, ...) に渡すことです。
-(void)DIY_msgSend:(id)target selector:(SEL)op params:(id)param, ...
{
objc_msgSend(target, op, ...);
}
したがって、重要なのは、それらの変数パラメーターを、変数パラメーターも必要とする別の関数に渡す方法です。