• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Funktionsdeklaration

Termy

Boskop
Registriert
28.12.09
Beiträge
209
Hey,

Bin gerade ein bisschen mit dem iPhone und XCode üben, aber ich habe ein Problem und zwar möchte ich eine Funktion, die eine Linie zeichnet machen.


Ungefähr so (in Visual Basic):
Sub Drawline(int StartX, int StartY, int EndX, int EndY) {
}
Die Funktion rufe ich dann so auf
Drawline(0, 0, 50, 50)

Und jetzt möchte ich wissen wie das ganze in Objective-C funktioniert. Habe mich schon durchs komplette Internet gewühlt, aber die Sprache ist so unbekannt und deswegen finde ich nichts.

Vielen Dank im Voraus
 

Termy

Boskop
Registriert
28.12.09
Beiträge
209
Hmm da find ich jetzt auch nichts...die wird ja von Google mit durchsucht. Ich will einfach nur ne Funktion schreiben, kann doch nicht sein dass das nicht in der Syntax steht oder?


EDIT: Bitte helf mir ich bin am verzweifelt. Ich hab ein großes Projekt vor aber ohne die eine oder andere Grundlage fange ich gar nicht erst an (obwohl es weitaus kompliziertere Sachen gibt als ne Funktion zu schreiben und aufzurufen)
 

Pii

Rheinischer Krummstiel
Registriert
25.06.07
Beiträge
383
Und jetzt möchte ich wissen wie das ganze in Objective-C funktioniert.
In Objective-C würde so eine Methode so aussehen:
Code:
-(void)drawLineFromPoint:(NSPoint)startPoint toEndPoint:(NSPoint)endPoint withColor:(NSColor *)lineColor andLineWidth:(CGFloat)lineWidth;

Habe mich schon durchs komplette Internet gewühlt, aber die Sprache ist so unbekannt und deswegen finde ich nichts.
Kennst Du Google? Liefert für "Objektive-C" über 20 Mio. Treffer.
 
Zuletzt bearbeitet:

gKar

Maunzenapfel
Registriert
25.06.08
Beiträge
5.362
Wenn er überhaupt eine Methode will.
Er hat explizit von Funktion gesprochen und keine Klasse genannt. Also würde ich sagen: Eine ganz normale ANSI-C-Funktion. Und C ist nun wirklich nicht unbekannt.

Übrigens: Wer nicht weiß, was C und Objective-C sind und in welchem Verhältnis sie stehen (vielleicht noch nicht einmal die OOP-Konzepte kennt), der sollte m.E. lieber noch nicht mit iPhone-Entwicklung beginnen. In eine unbekannte Sprache und vllt. sogar ein unbekanntes Paradigma sowie die Nutzung komplexer und unbekannter Frameworks einfach so mit Ausprobieren und etwas Googlen einzusteigen, kann IMHO weder zu hochwertiger Software noch zu gefestigtem Verständnis der Materie führen.
 
  • Like
Reaktionen: Poljpocket

Pii

Rheinischer Krummstiel
Registriert
25.06.07
Beiträge
383
Er hat explizit nach Objective-C gefragt. Eine C-Funktion hätte sich von seinem Beispiel ja auch kaum unterschieden.
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
EDIT: Bitte helf mir ich bin am verzweifelt. Ich hab ein großes Projekt vor aber ohne die eine oder andere Grundlage fange ich gar nicht erst an (obwohl es weitaus kompliziertere Sachen gibt als ne Funktion zu schreiben und aufzurufen)
Schön, dass Du Dir erst einmal Grundlagen aneignen willst. Hast Du denn auch mal direkt auf der Startseite des iPhone Dev Center geschaut? Da sind Dokumente verlinkt, die grundlegende Konzepte erklären.

MacApple
 

Termy

Boskop
Registriert
28.12.09
Beiträge
209
Vielen Dank, das Probier ich dann heuz Mittag aus @Pii

Okay da schaue ich mal rein. @MacApple

@gKar Ich habe auch ein Buch über iPhone Programmierung aber da wird nicht auf Objektive-C eingegangen. Und C++ kann ich sowieso weil ich das früher bei der PSP programierung brauchte
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652

Termy

Boskop
Registriert
28.12.09
Beiträge
209
Tue Dir selbst einen Gefallen und versuche nicht Objective-C wie C++ zu verwenden. Das geht schief.

MacApple

Okay...also wie meinste das mit der Verwendung...ich programmier halt einfach was.
Könntest du das nochmal genauer Erläutern?
 

Termy

Boskop
Registriert
28.12.09
Beiträge
209
Gut ich bin jetzt schonmal ein Stück weiter und habe die Funktionsdeklaration (heißt in OBJ-C wohl Methode) verstanden.

Jetzt ist das hier meine Methode:
-(void) drawlineFromPoint:(CGPoint)startPoint toEndPoint:(CGPoint)endPoint withLineWidth:(CGFloat)lineWidth {
UIGraphicsBeginImageContext(self.view.frame.size);
[drawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), lineWidth);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 1.0);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), startPoint.x, startPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), endPoint.x, endPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
Danke nochmal an Pii


Hier rufe ich sie auf:
NSSet *allTouches = [event allTouches];
//Erase Image
drawImage.image = nil;
//Get Touch #1
UITouch * touch = [[allTouches allObjects] objectAtIndex:0];
CGPoint pos = [touch locationInView:self.view];
//Draw Touch #1
[PaintViewController drawlineFromPoint:pos toEndPoint:pos withLineWidth:2];


Trotzdem hängt sich mein Programm an der Stelle auf wen ich es debugge!

Kann jemand einen Fehler finden?
 

Termy

Boskop
Registriert
28.12.09
Beiträge
209
Danke, @MacApple. Das ist auch sehr hilfreich. Mit deinem Tipp habe ich es geschafft!

Ich hatte das geschrieben:
[PaintViewController drawlineFromPoint:pos toEndPoint:pos withLineWidth:2];

So geht es richtig:
[self drawlineFromPoint:pos toEndPoint:pos withLineWidth:2];

Muahaaha dann kanns ja weitergehen
 

gKar

Maunzenapfel
Registriert
25.06.08
Beiträge
5.362
Gut ich bin jetzt schonmal ein Stück weiter und habe die Funktionsdeklaration (heißt in OBJ-C wohl Methode) verstanden.

Nicht ganz (genau daher ja mein Post von weiter vorne):
„Methode“ ist ein Begriff aus der objektorientierten Programmierung. Funktion ist ein Begriff aus der prozeduralen oder auch funktionalen Programmierung.

In Objective-C gibt es sowohl Funktionen (von C „geerbt“) als auch Methoden. Im Gegensatz zu Funktionen sind Methoden Teil einer Klasse. Daher sagte ich ja: Man sollte erst die Konzepte der OOP verstanden haben (wozu in aller Regel auch die Kenntnis des Begriffs „Methode“ gehört).
 

Pii

Rheinischer Krummstiel
Registriert
25.06.07
Beiträge
383
Trotzdem hängt sich mein Programm an der Stelle auf wen ich es debugge!
Kann jemand einen Fehler finden?
Gibt es eine Meldung?

PS: Start- und Endposition sind identisch. Hier und da Leerzeichen zu viel.

Edit:
Gut ich bin jetzt schonmal ein Stück weiter und habe die Funktionsdeklaration (heißt in OBJ-C wohl Methode) verstanden.
Das ist eine Methodenimplementierung.
 
Zuletzt bearbeitet:

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
@gKar: Er kennt ja c++, auch eine OOP-Variante. Dadurch dürfte ihm dieses Konzept durchaus geläufig sein. Dort spricht man anscheinend von class-functions und instance-functions, nicht von Methoden...

Gruss ppocket