Wie übertrage ich (oder kann ich überhaupt) ein Nil-Argument an ein NSInvocation-Objekt?
Ich habe das versucht:
%Vor%Der erste Ansatz stürzt mit dieser Nachricht ab:
%Vor%Der zweite Ansatz stürzt mit dieser Nachricht ab:
%Vor%Vielen Dank im Voraus für jede Hilfe!
Ja, Sie können keine Argumente übergeben. Genauer gesagt können Sie einen gültigen Zeiger übergeben, dessen Inhalt Null ist.
Ich war nicht in der Lage, Ihr spezielles Problem zu reproduzieren. Hier ist der Code, mit dem ich es getestet habe. Es ist wahrscheinlich etwas anderes in Ihrem Programm, das den Fehler verursacht.
%Vor%Ich habe es auch getestet, ohne NSInvocationOperation zu verwenden und -retepartArguments direkt zu senden, da dies den Fehler auszulösen scheint.
Für den Datensatz wird Ihr zweiter Ansatz nicht funktionieren, da - [NSInvocation setArgument: atIndex:] eine gültige Speicheradresse erwartet, die auf einen Puffer zeigt, der kopiert wird. Bei Objektargumenten muss der Puffer die Adresse des Objekts enthalten. Die Adresse des Objekts kann Null sein, aber die Adresse des Puffers muss gültig sein.
Sie können dies erreichen, indem Sie einfach nicht setArgument:atIndex:
für den Argument-Index aufrufen, den Sie nicht beibehalten möchten.
Wenn Sie jedoch dieses Argument bereits auf etwas außer Null gesetzt haben und es auf Null zurückstellen möchten, scheinen ein paar schnelle Tests darauf hinzuweisen, dass Sie es einfach nicht können. Ich könnte falsch liegen, aber es sieht so aus, als müssten Sie ein neues Aufrufobjekt erstellen und manuell alle gewünschten Werte hineinkopieren, abzüglich des Arguments, dass Sie keine Null bleiben wollen.
Tags und Links objective-c cocoa