Tjena,
Först av allt, jag är ingen obj c guru, jag skulle nog inte ens vilja säga att jag kan obj c men däremot har jag kollat på det, lekt med det och klämt lite på det.
Om du har någon tidigare erfarenhet av objektorienterad programmering i tex. java eller c++ torde obj c inte vara något problem att lära sig. Det är ganska lustig syntax och språkets utformning skiljer sig från både java och c++ men det finns också många likheter.
I likhet med c++ så är obj c en vidareutveckling av c. All c kod går att kompilera i en obj c kompilator och man kan således använda alla vanliga c bibliotek. I likhet med java så har alla klasser en gemensam basklass kallad object (eller liknande). Dessutom är obj c något förenklat (som java) tex. har man tagit bort metodöverlagring vilket kan verka ganska konstigt. Man kan alltså inte göra två metoder med samma namn men olika signatur. Till skillnad från båda språken finns det något som heter klass-objekt som är objekt av klassen som ansvarar för konstruktion av objekt och som innehåller de metoder som i java skulle vara statiska metoder.
En annan stor skillnad mellan obj c och de andra språken är att obj c är mycket dynamiskt. Det som i andra språk avgörs vid kompilering avgörs under exekvering i obj c. Fördelen är att man slipper typecastning och kan göra mer dynamiska program (fråga mig inte hur men nackdelen är att kompilatorn upptäcker inte alla fel.
Syntaxen är väldigt lustig. Man säger inte att man kallar på metoder i obj c, man skickar meddelanden. Vilket meddelande som helst kan skickas till vilket objekt som helst vilket gör språket otroligt dynamiskt (se ovan) om ett objekt inte kan ta emot meddelandet ignoreras det helt enkelt.
Exempel:
java:
mittObjekt.minMetod(minParameter);
obj c:
[mittObjekt mittMeddelande:minParameter];
Om du vill kalla på en metod (skicka ett meddelande till) ett objekt som returneras av en metod blir det således:
[[mittObjekt mittMeddelande:minParameter] mittAndraMeddelande];
Du kanske kan föreställa dig att [ och ] är ganska välanvända tecken i obj c
Obj c används med fördel tillsammans med Cocoa APIn som är ett stort klassbibliotek med klasser för GUI, filhantering och en massa annat skoj. Ganska lik java APIn men utan java APIns suveräna dokumentation.
Du använder enklast Apples egna verktyg som dels är gratis och dels följer med MacOS X när du ska göra saker i obj c. ProjectBuilder för programmering, InterfaceBuilder för GUI konstruktion.
Självklart finns det nackdelar med obj c som med alla andra språk. Det är tex. ganska långsamt eftersom mycket som i andra språk kompileras avgörs vid körningen i obj c. En annan nackdel som är väldigt stor är utbredningen av objective c som inte direkt är överväldigande.
Bra hemsidor:
Filmer från WWDC 2000 (rekommenderas starkt om du har bredband)
http://connect.apple.com/WWDC2000/main.html
Beskrivning av språket Objective C
http://www.toodarkpark.org/computers/objc/coreobjc.html
Allehanda tips om programmering för MacOS X
http://www.stepwise.com/
Sök omnigroups obj c mailinglista (bra lista att vara med i)
http://www.omnigroup.com/search-bin/macosx-dev?Search=
ProjectBuilder och andra utvecklingsverktyg
http://developer.apple.com/tools/projectbuilder/ http://developer.apple.com/techpubs/macosx/DeveloperTools/devtools.html
Cocoa för Objectiva C (finns för java också) http://developer.apple.com/techpubs/macosx/Cocoa/Reference/Foundation/Obj C_classic/FoundationTOC.html http://developer.apple.com/techpubs/macosx/Cocoa/Reference/ApplicationKit /ObjC_classic/AppKitTOC.html
Apples Cocoa sida
http://developer.apple.com/techpubs/macosx/Cocoa/CocoaTopics.html
Lycka till med programmeringen!
Hälsningar,
Gabriel Falkenberg
[ 18 Maj 2001: Meddelandet ändrat av: Gabriel Falkenberg ]