Hjälp mig förstå cocoa

Tråden skapades och har fått 10 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • International user
  • 2004-03-30 10:59

Hej!

Jag har börjat kika lite på cocoa, fter några års erfarenhet av java.

Till att börja med så har jag lite frågor samt funderingar.

Om jag förstår rätt så betyder [ettObjekt doSomething]

samma sak som i Javas:

ettObjekt.doSomething()

eller?

Sen vad exakt betyder detta?

[myRect setWidth:10.0 height:15.0];

Jag förstår att man anropar metoden setWidth från objektet myRect, samt att metoden har två parametrar men vad står height för?

[receiver makeGroup:group, memberOne, memberTwo, memberThree];

Läste i guiden att group är en obligatorisk parameter men att de tre senare inte är obligatoriska.
Dvs man kan även anropa metoden så här:

[receiver makeGroup:group]

eller?

id klass;

är det samma sak som Javas

Object klass

Eller bör man istället skriva NSObjekt klass > Object klass?

Senast redigerat 2004-03-30 11:19

Ett litet snabbt svar på en av frågorna:

[myRect setWidth:10.0 height:15.0];

Detta kallar inte metoden setWidth, utan metoden setWidth:height:

Cocoas metodnamn kan alltså vara uppdelade i flera delar, med parametrarna instoppade mellan de olika delarna.

I övrigt så rekommenderar jag verkligen Aaron Hillegass bok Cocoa Programming. Suverän bok för Cocoa-nybörjare. Den kommer dessutom i en ny upplaga snart.

  • Medlem
  • International user
  • 2004-03-30 15:10

hmm, en bok ska jag nog ha ifall Cocoa blir mer intressant för mig. Just nu har jag ingen bok så jag får klara mig så bra jag kan, dvs genom att leta och fråga.

  • Medlem
  • 2004-03-30 22:43
Ursprungligen av jme:

hmm, en bok ska jag nog ha ifall Cocoa blir mer intressant för mig. Just nu har jag ingen bok så jag får klara mig så bra jag kan, dvs genom att leta och fråga.

hehe... ja, det är bättre att vi som är dumma nog att köpa böckerna förklarar för dig istället Den är bra, så ska jag köra i fortsättningen

Hej

En viktig sak att komma ihåg när man programmerar med Objective-C är att man jobbar med pekare till objekt och inte direkt mot objekten.

id är en generell pekare som du kan använda av för alla klasser som ärver från NSObject. NSObject är den superklass som i Java motsvaras av Object.

Joakim

  • Medlem
  • Lund
  • 2004-03-30 18:08

varför inte programmera i cocoa med java istället?

  • Medlem
  • 2004-03-30 22:54
Ursprungligen av jme:

Hej!

Jag har börjat kika lite på cocoa, fter några års erfarenhet av java.

Till att börja med så har jag lite frågor samt funderingar.

Om jag förstår rätt så betyder [ettObjekt doSomething]

samma sak som i Javas:

ettObjekt.doSomething()

eller?

juppomundo!

Ursprungligen av jme:

Sen vad exakt betyder detta?

[myRect setWidth:10.0 height:15.0];

Jag förstår att man anropar metoden setWidth från objektet myRect, samt att metoden har två parametrar men vad står height för?

myRect är ett objekt som tar in parametrarna Width och Height (Bredd och Höjd) för vad man skulle gissa är en Rektangel.

Ursprungligen av jme:

[receiver makeGroup:group, memberOne, memberTwo, memberThree];

Läste i guiden att group är en obligatorisk parameter men att de tre senare inte är obligatoriska.
Dvs man kan även anropa metoden så här:

[receiver makeGroup:group]

eller?

Yes, precis som i C så kan man anropa funktioner med fler paramertar än som är definierade förutsatt att man definierar funktion som sådan. Det samma gäller Metoder i Obj-C. (Obj-C är en viderautveckling/baserad av C; C och smalltalk i ett kan man säga).

Ursprungligen av jme:

id klass;

är det samma sak som Javas

Object klass

Eller bör man istället skriva NSObjekt klass > Object klass?

Som Jocked skriver "id är en generell pekare som du kan använda av för alla klasser som ärver från NSObject. NSObject är den superklass som i Java motsvaras av Object."

/NiVec

Ursprungligen av jme:

Sen vad exakt betyder detta?

[myRect setWidth:10.0 height:15.0];

Jag förstår att man anropar metoden setWidth från objektet myRect, samt att metoden har två parametrar men vad står height för?

För att förvirra ytterligare och locka till bokköp:
Man anropar inte metoder från objekt, man skickar meddelande till dem. Det kan tyckas petigt med skillanden, men det är ofta så att objekt skickar vidare meddelanden istället för att hantera det själv.
Det här är på sätt och vis den fundamentala skillnaden mellan ObjC och Java/C++.

Ursprungligen av jme:

[receiver makeGroup:group, memberOne, memberTwo, memberThree];

Läste i guiden att group är en obligatorisk parameter men att de tre senare inte är obligatoriska.
Dvs man kan även anropa metoden så här:

[receiver makeGroup:group]

Tänk på motsvarigheten till printf("nummer %d och %d\n", 1 2) i C, du vet inte hur många argument du har förrän du läst det första (och obligatoriska) argumentet. I ObjC:
[NSString stringWithFormat:@"nummer %d och %d och en hälsning %@", 1, 2, @"Hello world!"];

  • Medlem
  • International user
  • 2004-03-31 08:13

Tack för svaren!

Jag ska försöka förstå och komma ihåg allt också.

  • Medlem
  • Stockholm
  • 2004-03-31 08:48

Jag ska handla bok, så fort den kommer ut i en version som behandlar xcode

  • Medlem
  • 2004-04-01 19:43
Ursprungligen av swede:

Jag ska handla bok, så fort den kommer ut i en version som behandlar xcode

Ingen större skillnad på Xcode och project builder.

Allt du behöver veta kan du läsa här.

1
Bevaka tråden