Einführung in Objective C
Objective-C ist ein um objektorientierte Sprachkonstrukte erweiterter C-Dialekt.
Typen (Auszug)
-
C-Datentypen:
void, short, int, float, double, char*, void* -
Objective-C:
-
BOOL(YES/NObzw.TRUE/FALSE) -
id(repräsentiert ein beliebiges Objekt) nil
-
-
Foundation:
-
NSObject(Basisklasse für Objekte) NSString-
NSArray,NSDictionary,NSSet -
NSMutableArray,NSMutableDictionary,NSMutableSet -
NSDate,NSURL,NSData
-
Klassen deklarieren
Eine Klasse wird in Objective-C mittels @interface ... @end in einer Header-.h-Datei deklariert, z.B. MyClass.h:
@interface MyClass : NSObject {
// Deklaration von Instanzvariablen
}
// Deklaration von Methoden
@endDie Implementierung erfolgt mittels @implementation ... @end in MyClass.m:
#import "MyClass.h"
@implementation MyClass
// Implementierung von Methoden
@endMethoden deklarieren
Der Name einer Methode setzt sich in Objective C aus den Namen der Parameter zusammen. Im folgenden werden drei Methoden zero, increment: und addNumber1:number2: deklariert:
MyClass.h:
@interface MyClass : NSObject {
}
- (int) zero;
- (int) increment:(int)value;
- (int) addNumber1:(int)a number2:(int)b;
@endMyClass.m:
#import "MyClass.h"
@implementation MyClass
- (int) zero {
return 0;
}
- (int) increment:(int)value {
return value + 1;
}
- (int) addNumber1:(int)a number2:(int)b {
return a + b;
}
@endIm Vergleich zu Java:

Methodenaufrufe
int value1 = [obj zero];
int value2 = [obj increment:5];
int value3 = [obj addNumber1:5 number2:3];Im Vergleich zu Java:

Konstruktoren
-
[MyClass alloc]reserviert Speicher für ein neues Objekt -
[object init...]-Methoden initialisieren das Objekt -
[[MyClass alloc] init...]ist vergleichbar mit einem Konstruktor-Aufruf - Viele Klassen stellen Convenience-Konstruktoren (statische Factory-Methoden)
[MyClass MyClassWith...]bereit, dieallocundinit...in einem Schritt erledigen
MyClass.h:
@interface MyClass : NSObject {
// Sichtbarkeiten: @private, @protected, @public
@private
NSString* somePrivateIvar;
int someOtherPrivateIvar;
}
// "+": Statische Klassenmethoden (v.a. Factory-Methoden / Convenience Konstruktoren)
+ (id) MyClassWithString: (NSString *) aString;
// "-": Instanzmethoden
- (id) initWithString: (NSString *) aString;
@endMyClass.m:
#import "MyClass.h"
@implementation MyClass
- (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) MyClassWithString: (NSString *) aString {
return [[[MyClass alloc] initWithString: aString] autorelease];
}
@endStrings
// "..." 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", MyClass, helloObjC, 5);
NSLog(@"%@", [MyClass description]);Weitere Informationen
- The Objective-C Programming Language: Introduction
- The Objective-C 2.0 Programming Language: PDF
- Objective-C Beginner’s Guide
- Objective-C (Wikipedia)