Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
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.
23.12.10
22: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?
Hilfreich?
0
Kommentare
Mr. Krabs
23.12.10
22: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!“
Hilfreich?
0
uwe_aus_messel
23.12.10
22: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.
Hilfreich?
0
Stefan S.
23.12.10
23: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!
Hilfreich?
0
CrazyDevil
23.12.10
23: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...
Hilfreich?
0
Stefan S.
24.12.10
00:09
Ah, mhm, mal angucken und merken für die Zukunft.
Hilfreich?
0
MacMark
24.12.10
10: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“
Hilfreich?
0
Request
24.12.10
11:20
Pointer? Sollte es da ja auch geben...
„1984 - Think different - Macintosh - iPhone / iPad - Think nothing - 2014“
Hilfreich?
0
Mr. Krabs
24.12.10
11: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!“
Hilfreich?
0
iCode
27.12.10
09:43
Das passt doch. Globale Variablen sind auch richtig schlechter Programmierstil.
Hilfreich?
0
MacMark
27.12.10
11: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“
Hilfreich?
0
Mr. Krabs
27.12.10
12: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!“
Hilfreich?
0
MacMark
27.12.10
12: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“
Hilfreich?
0
MacMark
27.12.10
15: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“
Hilfreich?
0
iCode
28.12.10
11: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.
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.
macOS 15.2 steht ab sofort zur Verfügung
Test AirPods Pro 2
Parallels führt x86-Windows auf M-Macs aus – Te...
Mac mini M4: Reparaturhandbuch bestätigt austau...
Gurman zum Release des neuen Apple TV, HomePods...
Leak in macOS 15.2 Sequoia: Neues MacBook Air k...
Kurz: Trump unterstützt Musk als TikTok-Besitze...
iPod-Vater Tony Fadell wollte Sonos kaufen – St...