Ganzzahl als Referenz übergeben

7

Ich habe eine Klassenebene int in meiner Header-Datei definiert. In der .m-Datei habe ich eine Methode, die ich einen int-Parameter nehmen möchte, ändern Sie es und den geänderten Wert auf den Aufrufer widerspiegeln. Zum Beispiel:

%Vor%

In einer Methode:

%Vor%

Ich habe versucht, ein

zu verwenden
  • NSNummer
  • Zeiger eines Zeigers (**)
  • Konvertieren von int in NSNumber innerhalb der Methode, was zu einem neuen Adressraum führt

Der Wert, der in der Methode für classLevelInt angegeben ist, wird jedoch nie außerhalb dieser Methode angezeigt. Wie kann ich den Wert von classLevelInt außerhalb der Methode beibehalten, ohne den neuen int-Wert von -someMethod zurückzugeben? Oder, wenn das einfach kein guter Ansatz ist, was ist ein besserer Weg?

    
4thSpace 01.01.2010, 00:39
quelle

2 Antworten

14

Sie können einen Zeiger an classLevelInt als int* übergeben.

%Vor%

Eine zweite Möglichkeit besteht darin, classLevelInt in derselben Klasse direkt zu ändern.

%Vor%     
iamamac 01.01.2010, 00:52
quelle
8

iamamac ist korrekt, aber Sie haben auch gefragt, ob es einen besseren Weg gibt.

Wenn möglich, einfach den Wert direkt zurückgeben. Pass-by-Reference verursacht in der Regel ein bisschen "Code-Geruch" der unangenehmen Art.

Wenn Sie mehrere Ints zurückgeben müssen, sollten Sie möglicherweise eine Struktur oder eine Klasse zum Einkapseln der Daten erstellen.

    
bbum 01.01.2010 01:19
quelle