Benutzer-Werkzeuge

Webseiten-Werkzeuge


objc:start

Dies ist eine alte Version des Dokuments!


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

Tutorials

Kostenpflichtige Tutorials

objc/start.1425453618.txt.gz · Zuletzt geändert: 2015-03-04 08:20 von a.kamola