Training „git“
07.10.2010 - 08.10.2010, Essen
Training „Eclipse RCP“
28.03.2011 - 01.04.2011, Dortmund

Einführung in Objective-C

Objective-C

Standard-Typen (Auszug)

Methodensignaturen und Methodenaufrufe

Objektallokation, Initializer

Strings, Logging

// "..." erzeugt einen C-String
const char *helloC = "Hello";
// @"..." erzeugt ein NSString-Objekt
NSString *helloObjC = @"Hello";

// Strings formatieren
NSString *formatted = [NSString stringWithFormat:@"%s %i %@", helloC, 5, helloObjC];

// Konvertierung zwischen char* und NSString
const char *utf8CString = [helloObjC UTF8String];
NSString *fromCString = [NSString stringWithUTF8String: helloC];

// Logging
NSLog(@"%@, %@ and %i", someObject, helloObjC, 5);
NSLog([someObject description]);

Klassen

Klassendefinition @interface

@interface SomeObject : NSObject {
    // Deklaration von Instanzvariablen (ivars)
}

// Deklaration von Methoden

@end

Klassendefinition @interface: Instanzvariablen, Methoden

@interface SomeObject : NSObject {

@private                            // Sichtbarkeit: @private, @protected, @public
    NSString* somePrivateIvar;
    int someOtherPrivateIvar;

}

// "+": Statische Klassenmethoden (v.a. Factory-Methoden / Convenience Konstruktoren)
+ (id) someObjectWithString: (NSString *) aString;

// "-": Instanzmethoden
- (id) initWithString: (NSString *) aString;
- (NSString*) someMessageWithValue: (id) aValue otherValue: (int) anotherValue;

@end

Implementierung @implementation: Initializer

#import "SomeObject.h"

@implementation SomeObject

- (id) initWithString: (NSString *) aString {
    // Initializer der Superklasse aufrufen ([super init] liefert nil im Fehlerfall)
    if (self = [super init]) {
        // Objekt initialisieren
        somePrivateIvar = @"Some String";
    }
    return self;
}

+ (id) someObjectWithString: (NSString *) aString {
    return [[[SomeObject alloc] initWithString: aString] autorelease];
}

// ...

Implementierung @implementation: Methoden

// ...

- (NSString*) someMessageWithValue: (id) aValue otherValue: (int) anotherValue {
    return [NSString stringWithFormat:@"this: %@ and that: %i", aValue, anotherValue];
}

@end

Best Practice: Repository-Klassen

Xcode: Tastenkürzel

Xcode: Tastenkürzel umkonfigurieren

Weitere Informationen

Yang Meyer, 02. Juni, 09:54 Uhr

Nach den Cocoa-Konventionen sollte dein Convenience-Konstruktor +someObjectWithString: ein autoreleastes Objekt zurückgeben.

Ralf Ebert, 03. Juni, 11:51 Uhr

Danke für den Hinweis. War ursprünglich so gedacht, weil Memory Management ja erst im nächsten Kapitel eingeführt wird; keine gute Idee, ich habe das korrigiert.

Über Ihre Kommentare und Hinweise freue ich mich sehr:
Ralf Ebert | iPhone-Entwicklung | Einführung in Objective-C