Back to business

In: Afstuderen

17 May 2010

Na een periode van bezinning heb ik nu echt mijn afstudeerproject concreet. Het einddoel stond al een langere periode vast alleen de weg er naar toe was nog niet bepaald. Nu ik alles concreet heb ga ik er keihard tegenaan om, voor de vooraf bepaalde datum, het mobiele CMS concept voor de iPhone te realiseren.

Posted from Achtkarspelen, Friesland, The Netherlands.

Net als andere object georiënteerde programmeertalen wordt ook binnen Objective-C gebruik gemaakt van classes. Een Objective-C class bestaat uit twee bestanden een header (.h) en source/main (.m) file.

Header file
In de header file wordt de interface van de class bepaald. Hier worden variabelen en methods gedefinieerd.

In het @interface gedeelte worden de variabelen gedefinieerd. Onder het @interface gedeelte worden de class methods gedefineerd. De headerfile wordt afgesloten met @end, dit geeft aan dat het einde van de header is bereikt.

@interface ClassName: ParentClass
{
// Variable declarations

NSString *string;
NSArray *array;
}

// Method declarations

- (void) methodName:(NSString *)theString;
+ (void) method2Name;

@end

Source/main file
In de source file bevindt zich de implementatie van de in de header file gedefinieerde methods.

Een source file begint met @implementation gevolgd door de naam van de class. Na deze openingstag volgen de implementaties van de in de headfile gedefinieerde methods.

@implementation ClassName

- (void) methodName:(NSString *)theString
{
// Code
}

+ (void) method2Name
{
// Code
}

@end

Methods
In het hier voorgaande voorbeeld zien we twee verschillende method declaraties:

- (void) methodName:(NSString *)theString;
+ (void) method2Name;

Methods startende met een – zijn instance methods en + methods zijn class methods. Het verschil is de manier waarop een method gebruikt wordt. Een instance method wordt op de volgende manier aangeroepen vanuit een andere class:

ClassName *class = [[ClassName alloc] init];
[class methodName:@”stringValue”];

Het aanroepen van een class method gaat als volgt:

[ClassName method2Name];

Na het + of – teken volgt de return value, in dit geval void. De return value kan uit verschillende objecten bestaan zoals NSString, NSArray of Bool.

De return value wordt gevolgd door de method naam, methodName en method2Name. Na de method naam kunnen attributen opgenomen worden in de method, (NSString *)theString. Als eerste wordt het type gedefinieerd, in dit geval NSString, gevolgd door de naam, theString.

Dit alles zorgt voor de basis opbouw van een class. Door het combineren van meerder classes ontstaat een bestandstructuur die samenwerken binnen een applicatie. Classes maken het hergebruik van code mogelijk waardoor de code overzichtelijk blijft en daardoor eenvoudig aan te passen.

Logboek 19 april

In: Afstuderen

19 Apr 2010

Onderzoek

Uitvoeren van tutorials waarbij lokaal opslaan van data centraal staat


Afstudeerdocumentatie

Documenteren van afstudeeropdracht.


Concept iPhone CMS

Schermvoorstellen ontwerpen.

iPhone CMS

In: Afstuderen

14 Apr 2010

Voor mijn afstuderen verdiep ik me tot iPhone development. Ik ga een concept ontwikkelen voor een iPhone CMS. Het iPhone CMS zal er voor zorgen dat content beheer flexibeler en toegankelijker zal worden.

Bij het concept zal gekeken worden naar de bestaande CMS functionaliteiten en hoe deze eventueel toegankelijk gemaakt kunnen worden voor het iPhone platform. Daarnaast wordt er gekeken naar functionaliteiten die inzetbaar zijn door specifieke mogelijkheden van de iPhone. Hierbij kan gedacht worden aan camera, accelerometer en geolocations.

Na de conceptfase zal er over gegaan worden tot het ontwikkelen van het CMS. Het product zal hierbij gekoppeld worden aan het Speakpoint CMS van Speak.

Logboek: 14 april

In: Logboek

14 Apr 2010

Onderzoek

Onderzoek verrichten naar multi-threading binnen iPhone applicaties. Doel van het onderzoek is om achter de werking van multi-threading te komen en het nut van multi-threading.

NSThread class:
-  iPhone NSThread class reference

Tutorial:
- Threading tutorial using NSThread in iPhone SDK (Objective-C)


Concepting iPhone CMS

- Wat kan er allemaal in een iPhone cms
- Welke functionaliteiten kunnen worden opgenomen in een iPhone cms
- Wat is de toegevoegde waarde van een iPhone cms

  • Comments Off

Donderdag onderzoek verricht naar het maken van een imageslider voor op de iPhone. Deze imageslider moet er voor zorgen dat de gebruiker eenvoudig door meerder afbeeldingen kan bladeren. Daarnaast kan de gebruiker maken van de mogelijkheid om in en uit te zoomen op de afbeelding. Dit zal gerealiseerd worden aan de hand van multi-touch.

De meest voorkomende manier voor het realiseren van een imageslider is door gebruik te maken van een UIScrollView met hierin een UIImageView waar de afbeeldingen worden getoond. Aan de UIImageView wordt vervolgens de zoom techniek gekoppeld waarmee de gebruiker de afbeeldingen kan vergroten en verkleinen.

Na het onderzoek heb ik op vrijdag enkele testimplementaties uitgevoerd, allen zonder het gewenste resultaat. Zal de komende dagen dan ook meer tijd besteden aan de imageslider.

Zoals bij vele applicaties wordt er gebruik gemaakt van externe data. Bij het ontwikkelen van iPhone applicaties kan er gebruik gemaakt worden van verschillende datasources. Zo kan er onder andere gebruik gemaakt worden van property lists, object archives, SQLite3, Core data en het veelgebruikte XML en JSON.

XML

XML voorbeeld

Voor het gebruiken van XML beschikt de iPhone SDK over een xml parser class genaamd NSXMLParser. In deze class worden verschillende delegate methods aangeboden voor het verwerken van XML bestanden, uitgebreide class notatie. Veel gebruikte delegate methods bij het verwerken van XML zijn:

  • parser:didStartElement:namespaceURI:qualifiedName:attributes:
  • parser:didEndElement:namespaceURI:qualifiedName:
  • parser:foundCharacters:

parser:didStartElement…

De didStartElement wordt gebruikt om van iedere startnode, <startnode>…, in het XML document te lokaliseren. Aan de hand van het localiseren van de startnode kan er een actie uitgevoerd worden. Bijvoorbeeld het aanmaken van een string waarin de content van het xmlelement opgeslagen kan worden.

parser:foundCharacters…
foundCharacters wordt aangeroepen na de didStartElement method en lokaliseerd de inhoud van de xmlnodes, <startnode> gevonden inhoud </endnode>. Nu kan er een actie uitgevoerd worden die er voor zorgt dat de content van de node toegevoegd kan worden aan de string welke is aangemaakt in de didStartElement method.

parser:didEndElement..
Deze method is gelijk aan het didStartElement, alleen zorgt deze method er voor dat de endnode, …</endnode>, wordt gevonden. Mocht de endnode gevonden zijn dan kan er bijvoorbeeld voor gekozen worden dat de string, gemaakt in het didStartElement, toegevoegd wordt aan een array of dictionary.


JSON

JSON voorbeeld

Net als XML is JSON een datastructuur die veel gebruikt wordt voor het aanbieden van data. JSON wordt eveneens gebruikt bij het ontwikkelen van iPhone applicaties maar is niet opgenomen in de iPhone SDK. De iPhone SDK biedt geen parser voor JSON hetgeen bij XML wel het geval is, NSXMLParser.

Voor het gebruik van JSON binnen een iPhone applicatie is er een JSON framework gemaakt die eenvoudig toegevoegd kan worden aan de iPhone SDK. Voordeel van het JSON framework is dat het eenvoudig aangeroepen kan worden en het JSON bestand correct retourneert. Het enige wat de ontwikkelaar hoeft te doen is het aanleveren van een JSON file, de parser binnen het JSON framework doet de rest.

Daarnaast bestaat er een groot verschil in de notatie van een XML bestand en JSON bestand. Door de structuur die JSON handteerd is de bestandsgrote van een JSON bestand kleiner dan een XML bestand. En vooral op het gebied van iPhone development betekent iedere byte een snellere applicatie.

JSON framework
http://code.google.com/p/json-framework/

Tutorials
http://blog.grio.com/2009/04/dealing-with-json-on-iphone.html
http://letstalkiphone.com/2009/08/using-json-webservices/


Tip
Bepaal voor het ontwikkelen van een applicatie een duidelijke XML of JSON structuur voor de applicatie. Ga aan de hand van deze informatie een parser class aanmaken die vanuit verschillende views aangeroepen kan worden en de xmlbestanden in het juiste formaat retourneert.

Afstuderen

In: Afstuderen

25 Feb 2010

Vandaag eindelijk een afstudeerblog aangemaakt waarin ik een ieder up-to-date ga houden m.b.t. mijn afstuderen. Mijn afstudeeropdracht is gericht op iPhone development en zal ik uitvoeren bij Speak te Surhuisterveen.

Op het moment ben ik bezig mijn afstudeerplan de concretiseren en ben ik gestart met het onderzoeken van de iPhone SDK. Hierbij kijk ik voornamelijk naar de verschillende ontwikkeltools, Objective-C en Cocoa.

Wanneer ik dit alles onder de knie heb zal ik starten met het realiseren van een eindproduct. Hiermee ga ik mijn competentheid op het gebied van iPhone development aantonen.

Twitter