Kann eine Funktion ein Objekt zurückgeben? Objective-C und NSMutableArray
Ich habe ein NSMutableArray. Es sind Mitglieder schließlich Mitglieder einer array-Instanz in einer Klasse. Ich will den instantiantion von NSMutable in einer Funktion und zur Rückgabe eines array-Objekts. Wenn ich dies tun können, kann ich einige meiner code leichter zu Lesen. Ist das möglich?
Hier ist, was ich versuche herauszufinden.
//Definition:
function Objects (float a, float b) {
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:[NSNumber numberWithFloat:a]];
[array addObject:[NSNumber numberWithFloat:b]];
//[release array]; ????????
return array;
}
//Declaration:
Math *operator = [[Math alloc] init];
[operator findSum:Objects(20.0,30.0)];
Mein code kompiliert werden, wenn ich instanziieren NSMutableArray kurz bevor ich senden Sie die Nachricht an den Empfänger. Ich weiß, ich kann ein array Arguments zusammen mit der Methode. Was ich habe ein problem zu sehen ist, wie eine Funktion verwenden, und ersetzen Sie das argument bei einem Funktionsaufruf. Jede Hilfe ist willkommen. Ich interessiere mich für das Konzept nicht in der Liste der Vorschläge zu ersetzen, die findSum Methode.
- Dies ist keine gültige C-Funktion Erklärung überhaupt. Zum deklarieren einer Funktion in C, die Sie einfach den Rückgabetyp (in diesem Fall NSMutableArray*), dann den Namen der Funktion, gefolgt von der Liste der formalen Parameter. Es gibt auch andere qualifier keywords, aber das ist der basic. C hat keine Vorstellung von einer "Funktion" Schlüsselwort zum deklarieren von Funktionen. Dies sollte nicht selbst kompilieren.
- tatsächlich, das war nicht immer Teil von meinem code, es ist eine abstrakte Darstellung. Ich habe versucht, herauszufinden, einen Weg, dass squeegy zeigte und nicht wusste, dass Sie eine Funktion definieren, die als Obj-C Typ. Vielen Dank für den Versuch zu helfen.
- Wenn du mit ARC (Automatic reference counting), dann autorelease ist nicht mehr möglich. Sie können hinzufügen, einige Kennzeichen, die das Ergebnis sollte autoreleased. Nicht sicher, wie das getan werden sollte, obwohl.
- es macht das richtige standardmäßig
Du musst angemeldet sein, um einen Kommentar abzugeben.
Autorelease verwenden, um die Objekte zurückgeben, die Sie erstellen, in Methoden/Funktionen.
Oder einfach:
[NSMutableArray array]
ist die Kurzform für[[[NSMutableArray alloc] init] autorelease]
.nil
erzählt die Methode, dass es keine weiteren Objekte hinzufügen. Die Letzte Reihe hat 2 Objekte in ihm. Das erste Beispiel nichtnil
weil Sie mit dem hinzufügen jedes Objekt, ein zu einer Zeit. In beiden Beispielen haben Sie am Ende ein array mit 2 Gegenständen. In der Tat, Sie können nicht hinzufügen nil zu einemNSArray
überhaupt.