2009-03-14 2 views
1

In meinem Ziel c-Klasse, würde Ich mag ein Array wie folgt sortieren:sortUsingFunction und „Leerwert nicht außer Acht gelassen, wie es sein sollte“

NSArray *sorted = [unsortedArray sortUsingFunction: mySort context: NULL]; 

Meine Sortierfunktion implementiert als:

NSInteger mySort(id one, id two, void *ctx) { return 1; } 

Wenn ich das Programm bauen der Compiler sagt mir:

error: void value not ignored as it ought to be 

Nun ich denke, ich weiß, was der Compiler zu tel versucht l ich:

"Ich weiß nicht, was zum Teufel" mySort "ist, so werde ich davon ausgehen, dass es 'void' zurückgibt. Hoppla, es sieht so aus, als ob du einer Variablen 'void' zuweisen willst, nein, das kann ich nicht. Versuchen Sie es erneut.“

Alles klar, Herr Compiler, was in der Welt ich muss Ihnen sagen, damit Sie wissen, die Funktionsprototyp ist NSInteger MYSORT (id, id, void *)? Ich habe versucht, setzen diese Linie in der Klassen-Header-Datei, vor dem "@interface", nach, so ziemlich überall, aber ich kann das nicht zur Arbeit bringen.

Wo/wie muss ich die Funktion Prototyp für meine Art zu deklarieren funktionieren?

Vielen dank im Voraus, Mark.

Antwort

5

sortUsingFunction: ist eine NSMutableArray-Methode, die das Array-Objekt neu anordnet und keinen Wert zurückgibt. Offenbar suchen Sie nach sortedArrayUsingFunction:, einer NSArray-Methode, die eine sortierte, automatisch freigegebene, flache Kopie des Arrays zurückgibt.

Verwandte Themen