Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Objective-C
Objective-C ist eine Objekt-orientierte Programmiersprache die fast ausschließlich von Apple für ihre Betriebssysteme MacOS X und iOS und deren Programme verwendet wird. Sie basiert auf der Programmiersprachen C und erweitert sie um die Objekt-orientierung, die stark an die Programmiersprache Smalltalk angelehnt ist.
Da Objective-C fast ausschließlich von Apple verwendet wird ist die Sprache fast untrennbar von Apples Frameworks Foundation und Cocoa bzw. Cocoa Touch und die Namen „Objective-C“, „Foundation“ und „Cocoa“ werden deshalb oft (wegen einer fehlenden klaren Trennung) synonym verwendet.
Wir versuchen aber die Dinge in diesem Wiki – nach bestem Wissen – klarer zu trennen.
Konstanten
Konstanten werden, wie in C, über die Compiler-Direktive #define
am Anfang einer Datei definiert.
Dieses Beispiel definiert eine Konstante FOOBAR
mit dem Zahlen-Wert 23:
#define FOOBAR 23
Wenn Objective-C – wie in der Regel üblich – mit dem Foundation-Framework verwendet wird, dann sollten lieber statische Eigenschaften statt Konstanten mit #define
verwendet werden.
Quelle: Stack Overflow: What is the best way to create constants in Objective-C?
Methoden
Klassen-Methoden
Klassen-Methoden sind Methoden einer Klasse, die verwendet werden können, ohne das ein Objekt erzeugt werden muss. In anderen Objekt-orientierten Programmiersprachen werden diese Methoden auch statische Methoden genannt.
Klassen-Methoden sind in Objective-C an einem +
zu Beginn der Signatur zu erkennen:
+ (void)fooClassMethod;
Die Klassen-Methode kann nun in anderen Klassen wie folgt direkt verwendet werden:
[FooBar fooClassMethod];
Instanz-Methoden
Instanz-Methoden sind die Methoden einer Klasse, die nur verwendet werden können, wenn aus einer Klasse ein Objekt erzeugt wurde. Daher sagt man auch umgangssprachlich „eine (Instanz-)Methode wird auf ein Objekt angewendet“.
Instanz-Methoden sind in Objective-C an einem -
zu Beginn der Signatur zu erkennen:
- (void)barInstanceMethod;
Instanz-Methoden können in anderen Klassen erst verwendet werden, wenn vorher ein Objekt mit der Klasse erzeugt wurde:
FooBar *foobar = [[FooBar alloc] init]; [foobar barInstanceMethod];
Delegates
Eigenen Delegate definieren
Delegates werden über ein Protokoll in der Header-Datei einer Klasse definiert:
- FooBar.h
#import <UIKit/UIKit.h> @protocol FooBarDelegate; @interface FooBar: UIViewController // Delegate property of the class @property (nonatomic, weak) id<FooBarDelegate> delegate; @end // Delegate @protocol FooBarDelegate <NSObject> @required -(void)requiredDelegateMethod; @optional -(void)optionalDelegateMethodOne; -(void)optionalDelegateMethodTwo:(NSString *)withArgument; @end
In der Implementierung kann immer auf die Delegate-Methode verwiesen werden, wobei mit folgender Abfrage sichergestellt werden sollte, dass die Delegate-Methode auch vorhanden ist:
if (self.delegate && [self.delegate respondsToSelector:@selector(optionalDelegateMethodOne)]) { [self.delegate optionalDelegateMethodOne]; }
Um den Delegate in einer anderen Klasse zu verwenden muss nun einfach die Header-Datei der Klasse mit dem Delegate importiert und der Delegate im Interface definiert werden:
#import "FooBar.h" // Import the class with delegate to use it @interface FooViewController : UIViewController <FooBarDelegate>
Quelle: iPhone Development 101: Objective-C: Delegate Protocols
Links
Tutorials
- Code School: Try Objective-C
Kostenlos nach Registrierung bei Code School