30 berichten aan het bekijken - 1 tot 30 (van in totaal 51)
  • Q:
    Bijdrager
    Josh_b

    Objective-C leren

    Hallo OMT’ers,

    Sinds het begin van de vakantie ben ik me een beetje gaan verdiepen in de wereld van het iPhone SDK. Het ziet er allemaal leuk uit om de vakantie aan te besteden :P. Op internet heb ik wat tutorials opgezocht, het vervelende daarvan is dat je niks kan vragen als je het niet snapt. Op dit moment kom ik qua code niet verder dan dat als ik op een button druk er een tekst in een label komt te staan. Ik vind objective c moeilijk om te begrijpen, vooral als je op school veel in java hebt moeten doen. Dus ik vroeg me af of er iemand is die het mee een beetje kan uitleggen en leren?

    Bijdrager
    Koetjesreep

    Ik ben er zelf ook aan begonnen. Als ik een vraag had stelde ik hem hier:) (ik leer het via een boek)

    Bijdrager
    maxim22

    in itunes U is er een gratis lessenreeks beschikbaar van Stanford U.

    Bijdrager
    Swiss
    Bijdrager
    Yost

    Ik heb persoonlijk meer aan een goed boek. Het standaard werk over Objective-C programmeren is “Programming in Objective-C 2.0 (2nd Edition)” van Stephen Kochan:
    http://www.amazon.com/Programming-Objective-C-2-0-Developers-Library/dp/0321566157/ref=sr_1_1?ie=UTF8&s=books&qid=1247214562&sr=1-1

    Je mag zelf bepalen of je meer vastloopt in Objective-C, de programmeertaal, of in Cocoa, het applicatieframework dat je voor iPone ontwikkeling dient te gebruiken. In het laatste geval is natuurlijk een Cocoa boek aan te raden.;)

    Overigens, Objective-C lijkt meer op Smalltalk dan op C, terwijl Java meer afgeleid is van C++ en C. Dus om de denkwijze achter Objective-C te begrijpen, is een inleiding in Smalltalk lezen misschien aan te raden:
    http://www.cosc.canterbury.ac.nz/wolfgang.kreutzer/cosc205/smalltalk1.html
    http://stephane.ducasse.free.fr/FreeBooks/HopkinsHoran/HopkinsHoran.pdf

    Niet erg praktisch, maar wel leuk als achtergrondmateriaal, is onderstaand boek. Daarin komt naar voren waarom al die mensen toch continu nieuwe programmeertalen blijven verzinnen. “Masterminds of Programming”:
    http://www.amazon.com/Masterminds-Programming-Conversations-Creators-Languages/dp/0596515170/ref=sr_1_1?ie=UTF8&s=books&qid=1247214122&sr=8-1

    Bijdrager
    Pieterr

    Meer interessant achtergrondmateriaal is te vinden op de website van Brad Cox:
    http://www.virtualschool.edu/objectivec/
    http://virtualschool.edu/cox/pub/

    Bijdrager
    Yost
    ”Yost”

    Overigens, Objective-C lijkt meer op Smalltalk dan op C, terwijl Java meer afgeleid is van C++ en C.

    Hmm, blijkbaar heb ik het bovenstaande niet goed. Zie:
    http://www.virtualschool.edu/objectivec/influenceOnJava.html

    Bijdrager
    Josh_b

    Van de week eens kijken wat ze in de bieb hebben liggen. Die standford lessen zien er wel veel belovend uit. Wat ik had bij andere tutorial filmpjes was bijvoorbeeld dat de beste man typte @synthesize en dan nog ergens nonatomic , en dan denk ik van allemaal leuk en aardig, maar wat doet dit precies. Dit leggen ze dan weer niet uit.
    Weet iemand wat het beste is om in onderstaand voorbeeld te gebruiken? want het schijnt beide te kunnen.
    [testLabel setText:@”hoi”] of testLabel.text = @”hoi”

    Bijdrager
    Yost

    De eerste. Daar gebruik je een message om het attribuut van je object te manipuleren. In het tweede voorbeeld zet je de waarde van het attribuut direct. Dat kan wel, maar da’s OO-filosofisch niet zo mooi. De interne toestand van een object, de waarden van z’n attributen, hoort niet direct gemanipuleerd te worden. Het feit dat het tweede kan, betekent dat het attribuut niet private is gedeclareerd, wat eigenlijk jammer is.

    Bijdrager
    Josh_b

    Ok ik moet je tekst even op me laten inwerken:P terwijl ik een les van stanford aan het kijken ben.

    Inactief
    Anoniem
    ”Josh_b”

    [testLabel setText:@”hoi”] of testLabel.text = @”hoi”

    Ze zijn allebei goed, maar die tweede werkt alleen maar in ObjC 2.0.

    Bijdrager
    Josh_b

    Dit deel van obj C kwam toevallig net voorbij in de video van stanford. Maar ik blijf het allemaal ingewikkeld vinden, misschien is een boek toch makkelijker. Alleen heeft die rot bieb hier boeken over super veel programmeer talen, behalve ObjC. En op dit moment ben ik ongeveer failliet:( dus een boek kopen zit er op dit moment nog niet in.

    Bijdrager
    Pieterr
    ”Josh_b”

    dus een boek kopen zit er op dit moment nog niet in.

    Dan begin je met deze. Wel een beetje droge stof, dus houd een biertje bij de hand…:lol:

    OEPS: Ik zie dat je 17 bent.
    …dus houd een colaatje bij de hand…:lol:

    Bijdrager
    Josh_b

    Uh we leven niet in Amerika waar je 21 moet zijn:P
    Hier mag dat gewoon vanaf 16, maar ik zal het pdfje eens door gaan nemen.

    Bijdrager
    Josh_b

    Pff zo’n boek als Yost aanraad is wel duur in Nederland.
    Deze kost hier €40. Dat gaat ook wel wat ver. Ik ga als ik op vakantie ben in New York, daar wel even in wat winkels rondkijken. Dat moet toch goedkoper zijn dan hier.

    Bijdrager
    Yost
    ”Josh_b”

    Pff zo’n boek als Yost aanraad is wel duur in Nederland.
    Deze kost hier €40. Dat gaat ook wel wat ver. Ik ga als ik op vakantie ben in New York, daar wel even in wat winkels rondkijken. Dat moet toch goedkoper zijn dan hier.

    Sorry. Bestellen bij amazon.com en de oceaan over laten zwemmen is overigens ook veel goedkoper dan in Nederland bestellen. Ik bestel Engelstalige boeken nooit in Nederland.;)

    Ik neem aan dat je de documentatie op http://developer.apple.com al weet te vinden? Daar is ook gratis info te vinden over Objective-C, Cocoa en iPhone ontwikkeling… Oh, Pieterrr postte ook al een link.

    Inactief
    Anoniem
    ”Josh_b”

    Alleen heeft die rot bieb hier boeken over super veel programmeer talen, behalve ObjC.

    Haal dan in ieder geval een boek over C in die bieb, want daar is ObjC een uitbreiding van. Een beetje basiskennis kan nooit geen kwaad. :wink:

    Bijdrager
    Pieterr

    Als je echt serieus met Objective C aan de slag wilt loont het de moeite om voor 30 dollar bij Amazon het boek van Kochan aan te schaffen dat Yost al genoemd heeft.

    Bijdrager
    Josh_b

    Verstuurt amazon dan ook naar Nederland?

    Bijdrager
    e.abrahamse

    Er zijn genoeg recente boeken te koop. In het geval van een beginnende programmeur in Xcode kan het zonder goede basis-kennis erg overweldigend zijn

    Ga eerst bij jezelf na wat je wilt bereiken en welke leerstijl het beste bij jou past. Als beginner kun je gratis de ADC-site van Apple raadplegen. Hier kun je een aardige ondergrond leggen met BecomeAnXcode en Programming in Objective C 2,.0.

    Als je een boek plezierig vind, raad ik je je licht op te steken bij:
    – Cocoa Programming for Dummies,
    – meerdere titels op de website van Apress over C, Xcode en iPhone,
    – Cocoa Programming for Mac OSX 3rd Edition van Aaron Hillegas , boeken van Stephen Kochan (topboeken), Xcode 3 Unleashed, Sams.Programming.In.Objective-C. Maar dan wel een voor een, anders word je gek!

    Als je voor de Iphone gaat ontwikkelen is de Stanford training in iTunes U een uitstekend uitgangspunt. Voor de meer ambitieuze projecten die bij iPhone OS 3.0 al snel aan de orde kunnen zijn, heb je meer achtergrondinformatie nodig. Dan geldt kennis van Xcode als een goede ondersteuning. Specifiek voor de iPhone zijn er ook al een aantal boeken beschikbar (The iPhone Developer’s Cookbook, The iPhone Cookbook en ook een boek van Apress).

    Begin met een eenvoudig, stapsgewijs project wat je later eventueel nog kunt uitbreiden. Je leert elke dag nieuwe dingen waardoor je langzaam maar zeker een redelijke basis opbouwt. Al doende krijg je Xcode en Interface Builder het snelste onder de knie krijgen. Dit forum kan je altijd uit de brand helpen. Let er wel op dat het vakantietijd is, en dan doen we vaak andere dingen. Heel veel succes toegewenst.

    Bijdrager
    Pieterr
    ”Josh_b”

    Verstuurt amazon dan ook naar Nederland?

    Jazeker.

    Bijdrager
    Josh_b

    Oja boeken zijn $8 verzendkosten. Maar als ik binnenkort toch in de US ben, kan ik net zo goed daar kijken:P
    Ik ga tot die tijd gewoon even wat tutorials bekijken en de stanford dingetjes in itunes.

    Bijdrager
    Josh_b

    Ik loop al een beetje vast in een tutorial, misschien dat een van jullie dit weet. Maar ik kom heel vaak tegen @property en @synthesize, ze proberen het wel uit te leggen alleen ik snap de bedoeling er niet helemaal van. Het enige wat ik weet is dat het een soort vervanging is voor iets. Maar wat dat iets is en wat je ermee kunt ben ik nog niet achter. Ook las ik iets dat het met gets en sets te maken heeft, maar ook daarvan heb ik geen idee wat het is.

    Bijdrager
    HerQ

    Alle variabelen die je in een class gebruik zijn in principe private, ze kunnen alleen van binnenuit de class worden gewijzigd en aangeroepen. Nu kun je methods maken voor andere classes zodat die wel bij de variabelen kunnen, bijvoorbeeld zo:
    [code:1:1a00e71aee]

    – (void)setAge:(NSInteger)age {
    _age = age;
    }

    – (NSInteger)age {
    return _age;
    }

    // Met een object, is wat moeilijker want nu heb je ook te maken met Memory Management
    – (void)setTitle:(NSString *)title {
    if(title != _title){
    [_title release];
    _title = [title retain];
    }
    }

    – (NSString *)title {
    return _title;
    }
    [/code:1:1a00e71aee]
    _title is in dit geval een instance variable, een variabele die in de header file is aangemaakt en die je door de ele class heen kunt gebruiken. Om dit echter steeds te moeten typen (het is bijna altijd hetzelfde) zou het wat vervelend worden en daarom zijn er in Objective-C 2.0 de properties geïntroduceerd. Je maakt eerst een poperty aan met @property waar je alles van dat bepaalde property vaststelt, en tenslotte gebruik je in je implementation file @synthesize om de property ook daadwerkelijk aan te maken, de methods ervoor te maken.

    Apple heeft in haar documentatie ook nogal wat stof staan over properties, moet je even op Googlen dan vind je het wel. Als je het eenmaal doorhebt is het echt heel simpel, maar misschien moet je eerst precies weten hoe Objective-C met variabelen werkt en hoe het nu precies zit met instance variables.

    Bijdrager
    Josh_b

    Dus als ik het goed begrijp kan je door middel van properties een variable door meerdere classes gebruiken?

    Bijdrager
    Yost
    ”Josh_b”

    … Ook las ik iets dat het met gets en sets te maken heeft, maar ook daarvan heb ik geen idee wat het is.

    “Getters” en “setters” zijn de methods waarmee je toegang krijgt tot de instance variabelen van een object. In veel programmeertalen is het een good practice om deze methods te beginnen met get en set. Voorbeeld:

    De naam van een Persoon-object opvragen: deNaam = [dePersoon getNaam]
    Of de naam toekennen aan een persoon: [dePersoon setNaam:”Jansen”]

    In Apple’s coderichtlijnen staat echter dat een getter-methode de naam van de variabele krijg, dus gewoon “naam” in plaats van “getNaam”. De er naamgevingsrichtlijnen voor setters zijn, ben ik ff kwijt.

    Bijdrager
    Pieterr

    Nog een aardige uitleg van het begrip Property:

    A property is a special sort of class member, intermediate between a field (or data member) and a method. Properties are read and written like fields, but property reads and writes are (usually) translated to get and set method calls. The field-like syntax is said to be easier to read and write than lots of method calls, yet the interposition of method calls allows for data validation, active updating (as of GUI visuals), and/or read-only ‘fields’.

    Bijdrager
    Josh_b

    Oh zijn dat de getters en setter, dan heb ik te moeilijk zitten denken. Die dingen kende ik al een beetje van java.
    @pieterr ik zal het zo ff doorlezen.

    Bijdrager
    Pieterr
    ”Josh_b”

    Maar ik kom heel vaak tegen @property en @synthesize, ze proberen het wel uit te leggen alleen ik snap de bedoeling er niet helemaal van.

    @property en @synthesize is syntactic sugar die door Apple is toegevoegd aan Objective-C sinds versie 2.0. Het bespaart je het handmatig programmeren van de getters en setters. (p.139 Kochan).

    Zie ook de Apple documentatie: Declared Properties.

    Bijdrager
    Josh_b

    Hier is de code van mijn simpele hello world app, hoe kan je dit bijvoorbeeld herschrijven met properties?

    [code:1:a148af0486]#import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>

    @interface HomeView : UIView{

    IBOutlet UITextField *naamField;
    IBOutlet UILabel *naamLabel;
    IBOutlet UIButton *resetButton;

    }

    – (IBAction)naamWeergeven;
    – (IBAction)reset;

    @end
    [/code:1:a148af0486]

    [code:1:a148af0486]
    #import "HomeView.h"

    @implementation HomeView

    – (IBAction)naamWeergeven;
    {
    if ([naamField.text length] == 0)
    {
    [naamLabel setText:[NSString stringWithFormat:@"Vul AUB een naam in!"]];
    }
    else
    {
    [naamLabel setText:[NSString stringWithFormat:@"Hoi %@", naamField.text]];
    }

    [naamField setEnabled:NO];
    [resetButton setHidden:NO];
    }

    – (IBAction)reset;
    {
    [naamField setEnabled:YES];
    [resetButton setHidden:YES];
    [naamLabel setText:@""];
    }

    @end
    [/code:1:a148af0486]

30 berichten aan het bekijken - 1 tot 30 (van in totaal 51)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.