Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Gert Bornheimer Geändert vor über 11 Jahren
1
Praxisbeispiel Cocoa Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller, SS 2012 Referent: Jan Moritz Kohl, 3. April 2012
2
Wiederholung MVC (Model-View-Controller) Daten - Oberfläche - Verknüpfung
3
Wiederholung Hauptobjekt = NSApplication Keine Ableitung zur Erstellung individueller Klassen sondern Delegation (Zusätzliche Klassen) bzw. Erweiterung durch Kategorien Bei Eingabe des Benutzers schickt NSApplication Nachricht an Delegate Delegate kann jedes Objekt sein, welches Delegation Methoden implementiert
4
Klassen Implementierung @implementation MyClass - (void)windowDidMove:(NSNotification*)notification { //... } @end Methode: windowDidMove / windowShouldClose
5
Instanz von MyClass MyClass *myDelegate = [[MyClass alloc] init]; [window setDelegate: myDelegate]; Unter NSWindow: if([[self delegate] respondsToSelector:@selector(windowDidMove:)]) { [[self delegate] windowDidMove:notification]; }
6
Beispiel für Delegation
7
Informelles Protokoll @interface NSObject(NSWindowNotifications) - (void)windowDidMove:(NSNotification *)notification; //... other methods here @end Häufig verwendet für Delegates
8
Formelles Protokoll @protocol NSWindowNotifications @optional - (void)windowDidMove:(NSNotification *)notification; //... other methods here @end @interface MyDelegate //... @end
9
Observer @implementation MyObject // Sendet MyNotification Nachricht wenn aufgerufen - (void)notify { [[NSNotificationCenter defaultCenter] postNotificationName:@"MyNotification" object:self]; } // Gibt Nachricht aus wenn MyNotification eingeht - (void)handleNotification:(NSNotification*)note { NSLog(@"Got notified: %@", note); } @end MyObject *object = [[MyObject alloc] init]; // MyNotification events von allen Objekten erhalten [[NSNotificationCenter defaultCenter] addObserver:object selector:@selector(handleNotification:) name:@"MyNotification" object:nil]; // eine Notification erstellen [object notify];
10
Observer Losere Form der Interaktion Delegate ist fest an Objekt gebunden, Observer hat eher informativen Charakter Registriereung bei NotificationCenter
11
Observer @implementation MyObject // Sendet MyNotification Nachricht wenn aufgerufen - (void)notify { [[NSNotificationCenter defaultCenter] postNotificationName:@"MyNotification" object:self]; } // Gibt Nachricht aus wenn MyNotification eingeht - (void)handleNotification:(NSNotification*)note { NSLog(@"Got notified: %@", note); } @end MyObject *object = [[MyObject alloc] init]; // MyNotification events von allen Objekten erhalten [[NSNotificationCenter defaultCenter] addObserver:object selector:@selector(handleNotification:) name:@"MyNotification" object:nil]; // eine Notification erstellen [object notify];
12
Observer @implementation MyObject // Sendet MyNotification Nachricht wenn aufgerufen - (void)notify { [[NSNotificationCenter defaultCenter] postNotificationName:@"MyNotification" object:self]; } // Gibt Nachricht aus wenn MyNotification eingeht - (void)handleNotification:(NSNotification*)note { NSLog(@"Got notified: %@", note); } @end MyObject *object = [[MyObject alloc] init]; // MyNotification events von allen Objekten erhalten [[NSNotificationCenter defaultCenter] addObserver:object selector:@selector(handleNotification:) name:@"MyNotification" object:nil]; // eine Notification erstellen [object notify];
13
Observer @implementation MyObject // Sendet MyNotification Nachricht wenn aufgerufen - (void)notify { [[NSNotificationCenter defaultCenter] postNotificationName:@"MyNotification" object:self]; } // Gibt Nachricht aus wenn MyNotification eingeht - (void)handleNotification:(NSNotification*)note { NSLog(@"Got notified: %@", note); } @end MyObject *object = [[MyObject alloc] init]; // MyNotification events von allen Objekten erhalten [[NSNotificationCenter defaultCenter] addObserver:object selector:@selector(handleNotification:) name:@"MyNotification" object:nil]; // eine Notification erstellen [object notify];
14
Quellen http://stackoverflow.com/questions/626898/how-do-i-create- delegates-in-objective-c http://stackoverflow.com/questions/626898/how-do-i-create- delegates-in-objective-c http://stackoverflow.com/questions/842737/cocoa- notification-example http://stackoverflow.com/questions/842737/cocoa- notification-example https://developer.apple.com/library/mac/#documentation/Co coa/Conceptual/CocoaFundamentals/CommunicatingWithObj ects/CommunicateWithObjects.html https://developer.apple.com/library/mac/#documentation/Co coa/Conceptual/CocoaFundamentals/CommunicatingWithObj ects/CommunicateWithObjects.html
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.