Angenommen, wir haben Methoden:Wie kann ich eine variable Anzahl von Argumenten an Methode2 von Methode1 übergeben, die eine variable Anzahl von Argumenten akzeptiert?
-(instancetype) initWithElements:(id)firstElement, ... NS_REQUIRES_NIL_TERMINATION;
+(instancetype) objWithElements:(id)firstElement, ... NS_REQUIRES_NIL_TERMINATION;
Ich verstehe, wie mit variabler Anzahl von Argumenten in -initWithElements:
arbeiten, aber ich verstehe nicht, wie Variablen -objWithElements:
--initWithElements:
passieren.
Ich meine, ich will wie etwas schreiben:
+(instancetype) objWithElements:(id)firstElement, ... NS_REQUIRES_NIL_TERMINATION {
return [[[self] initWithElements:ELEMENTS] autorelease];
}
Ist es überhaupt möglich?
Die einzige Lösung für mein Problem sehe ich darin, Argumente in Array zu speichern und Helper-Methode zu verwenden, die Objekt mit gegebenem Array initiieren wird.
Ich sehe. Aber ist das wirklich nötig? - (id) initWithFirst: (id) zuerst VAList: (va_list) args' statt '- (instantype) initWithElementsImpl: (va_list) args'? Ich meine, was ist, wenn der Benutzer etwas wie "[obj initWithVarargs: nil]" eingibt? – d12frosted
@RottenBrain Ich sehe dein Problem nicht. Der Benutzer ruft nur Methoden auf, die existieren. Wenn Sie 'initWithVarargs:' nicht deklarieren, erhält der Benutzer eine Compiler-Warnung/einen Fehler, wenn er versucht, ihn aufzurufen. Allerdings möchten Sie unbedingt ** auch das allererste Objekt an die Methode übergeben (Sie können keine Methoden und Funktionen nur mit variadischen Argumenten schreiben, ein fixes Argument ist immer notwendig). –