Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Obj.-C-Frage: Mehrere Rückgabewerte?

Obj.-C-Frage: Mehrere Rückgabewerte?

Stefan S.
Stefan S.23.12.1022:33
(Bin noch Objective-C-Frischling)
Eine Funktion kann ja mehrere Argumente haben. Aber kann man auch mehrere Werte zurückgeben?
Also mit return eine Liste von Werten zurückgeben?
0

Kommentare

Mr. Krabs
Mr. Krabs23.12.1022:51
Wenn du diese in einen NSArray speicherst, dann ja. Ansonsten nein (ist nicht wie z.B. bei Ruby). Du kannst aber mehrere übergebene Parameter dazu verwenden (mMn nicht zu empfehlen).
„Deux Strudel!“
0
uwe_aus_messel23.12.1022:52
Du hast die Möglichkeit ein Object zu returnieren oder etwas platter eine Struktur.
Oder Du übergibst der Funktion ein Argument per Referenz, dann kannst du denn wert in der Funktion ändern und hast ihn im Caller.
0
Stefan S.
Stefan S.23.12.1023:30
Aha. Danke schonmal.
Mittlerweile habe ich einfach globale Variablen definiert und in der Funktion mit Werten versehen. Aber, gut zu wissen, dass man ein Objekt/array/Struktur verwenden kann.

Danke!
0
CrazyDevil23.12.1023:53
Wir in der Firma erstellen für sowas ein ParameterObject. Dort hat man dann verschiedene Properties zum Speichern und lesen der Einstellungen. Und ein zusätzlicher Vorteil ist es, dass Du nur ein Funktionsargument hast, dass heißt, möchtest Du weitere Argumente hinzufügen, brauchst Du nur das ParameterObject anpassen. Die Funktion bleibt unberührt. Somit sparst Du Dir auch das Anpassen der Funktionsaufrufe in allen Quellcodedateien.

Nur so eine Idee...
0
Stefan S.
Stefan S.24.12.1000:09
Ah, mhm, mal angucken und merken für die Zukunft.
0
MacMark
MacMark24.12.1010:43
Mr. Krabs
Wenn du diese in einen NSArray speicherst, dann ja.

Oder NSMutableArray Einen NSArray kannst Du nicht nachträglich ändern.
Stefan S.
(Bin noch Objective-C-Frischling)
Eine Funktion kann ja mehrere Argumente haben. Aber kann man auch mehrere Werte zurückgeben?
Also mit return eine Liste von Werten zurückgeben?

Output-Parameter sind eine weitere Möglichkeit. So wie es typischerweise mit NSError gemacht wird.
„@macmark_de“
0
Request
Request24.12.1011:20
Pointer? Sollte es da ja auch geben...
„1984 - Think different - Macintosh - iPhone / iPad - Think nothing - 2014“
0
Mr. Krabs
Mr. Krabs24.12.1011:27
MacMark:
Rückgabewerte soll man ja nicht ändern, genauso wenig wie Parameter. Zeugt nicht von gutem Programmierstil, aber das ist ja auch Rosinenpicken
„Deux Strudel!“
0
iCode
iCode27.12.1009:43
Das passt doch. Globale Variablen sind auch richtig schlechter Programmierstil.
0
MacMark
MacMark27.12.1011:25
Mr. Krabs
@@MacMark:
Rückgabewerte soll man ja nicht ändern, genauso wenig wie Parameter. Zeugt nicht von gutem Programmierstil …

Nicht bei der Programmierung in C und Objective-C. Da ist es gutes Design. Such mal nach Output-Parametern oder Fehlerbehandlung (mit NSError). Beispielsweise in der Developer-Doku von Apple oder in Büchern von Aaron Hillegass, Jeff LaMarche, Dave Mark, Mark Dalrymple, Scott Knaster.
iCode
… Globale Variablen sind auch richtig schlechter Programmierstil.
Nicht prinzipiell. Was würde C denn nur ohne errno machen? OS X würde es dann gar nicht geben.
„@macmark_de“
0
Mr. Krabs
Mr. Krabs27.12.1012:25
MacMark
Mr. Krabs
@@MacMark:
Rückgabewerte soll man ja nicht ändern, genauso wenig wie Parameter. Zeugt nicht von gutem Programmierstil …

Nicht bei der Programmierung in C und Objective-C. Da ist es gutes Design. Such mal nach Output-Parametern oder Fehlerbehandlung (mit NSError). Beispielsweise in der Developer-Doku von Apple oder in Büchern von Aaron Hillegass, Jeff LaMarche, Dave Mark, Mark Dalrymple, Scott Knaster.
iCode
… Globale Variablen sind auch richtig schlechter Programmierstil.
Nicht prinzipiell. Was würde C denn nur ohne errno machen? OS X würde es dann gar nicht geben.

Ich muss @@iCode zustimmen. Dafür haben wir ja die ganzen High-Level-Sprachen, Design Patterns und was nicht alles. Aber natürlich geht es in C und bedingt in Obj-C nicht ganz ohne. Ich persönlich heiße es dennoch nicht gut, bis auf ein paar Ausnahmen (NSError wäre eine).
„Deux Strudel!“
0
MacMark
MacMark27.12.1012:55
Output-Parameter (wie für NSError angewendet) sind nicht in jeder Sprache möglich, weil man eventuell keinen Zugriff auf die Pointer hat. Design-Pattern sind auch je nach Sprachmöglichkeiten anders.
„@macmark_de“
0
MacMark
MacMark27.12.1015:25
Sieh Dir außerdem mal Methoden in Objective-C an, die mit "get" beginnen. Die verwenden ebenfalls Outputparameter (und haben nichts mit Java-"Gettern" zu tun).
„@macmark_de“
0
iCode
iCode28.12.1011:05
MacMark
iCode
… Globale Variablen sind auch richtig schlechter Programmierstil.
Nicht prinzipiell. Was würde C denn nur ohne errno machen? OS X würde es dann gar nicht geben.
Es gibt immer Ausnahmen. Dennoch sind globale Variablen schlechter Programmierstil. Insbesondere bei OOP.
Stefan S.
Mittlerweile habe ich einfach globale Variablen definiert und in der Funktion mit Werten versehen. Aber, gut zu wissen, dass man ein Objekt/array/Struktur verwenden kann.
Wenn diese "Werte" zusammengehören, wovon man ja ausgehen muss, sonst wären sie nicht Ergebnis einer gemeinsamen Operation, dann sollte es ein Objekt dafür geben dessen Attribute oder Properties diese sind. Und das gibt man dann zurück. Oder es existiert das Objekt über dessen Methode man diese Attribute beeinflusst.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.