Ich habe Probleme, das Konzept der Verkaufsstellen zu verstehen, wie das iPhone mit Ereignissen umgeht. Hilfe! Delegierte verwirren mich auch. Möchte jemand bitte erklären?Objective C-Terminologie: Outlets & Delegierte
Antwort
Outlets (im Interface Builder) sind Membervariablen in einer Klasse, in der Objekte im Designer zugewiesen werden, wenn sie zur Laufzeit geladen werden. Das IBOutlet
Makro (das eine leere #define
ist) signalisiert Interface Builder, es als eine Steckdose zu erkennen, die im Designer angezeigt wird.
Zum Beispiel, wenn ich einen Knopf in die Länge ziehen, schließen sie dann an den aButton
Auslass (definiert in meiner Schnittstelle .h-Datei), wird das Laden der NIB Datei zur Laufzeit aButton
den Zeiger auf diesen UIButton
durch die instanziierten zuweisen FEDER.
@interface MyViewController : UIViewController {
UIButton *aButton;
}
@property(nonatomic, retain) IBOutlet UIButton *aButton;
@end
Dann bei der Umsetzung:
@implementation MyViewController
@synthesize aButton; // Generate -aButton and -setAButton: messages
-(void)viewDidAppear {
[aButton setText:@"Do Not Push. No, seriously!"];
}
@end
Dadurch entfällt die Notwendigkeit, Code zu schreiben, um die GUI-Objekte zur Laufzeit instanziiert und zuordnen.
Wie für Delegierten, sind sie Ereignis empfangen Objekte von einem anderen Objekt (in der Regel eine verallgemeinerte API-Klasse, wie beispielsweise einer Tabellensicht) verwendet. Es gibt nichts an sich Besonderes an ihnen. Es ist eher ein Designmuster. Die Delegierten Klasse kann mehrere der erwarteten Nachrichten definieren, wie:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
... und das API-Objekt ruft diese Nachricht auf den Delegaten, wenn sie will es der Veranstaltung informieren. Zum Beispiel:
-(void)update:(double)time {
if (completed) {
[delegate process:self didComplete:totalTimeTaken];
}
}
und die Delegierten definieren die Nachricht:
-(void)process:(Process *)process didComplete:(double)totalTimeTaken {
NSString *log = [NSString stringWithFormat:@"Process completed in %2.2f seconds.", totalTimeTaken];
NSLog(log);
}
Ein solche Verwendung könnte sein:
Process *proc = [Process new];
[proc setDelegate:taskLogger];
[proc performTask:someTask];
// Output:
// "Process completed in 21.23 seconds."
Also Delegierte sind tatsächlich verherrlichte Versionen von was andere Sprachen wie Javascript oder Python als Rückrufe interpretieren, richtig? – SexyBeast
Ein Delegierter ist ein Objekt, das ein anderes Objekt Nachrichten weiterleiten kann. Mit anderen Worten, es ist wie wenn deine Mutter dir gesagt hat, du sollst dein Zimmer putzen und du hast es an deinen kleinen Bruder verpfändet. Dein kleiner Bruder weiß, wie man den Job macht (da du zu faul warst, um jemals zu lernen) und so macht er es für dich.
Was für ein wunderbarer, didaktischer Vergleich! –
Warum hat Mama nicht direkt den kleinen Bruder gefragt? – super9
- 1. Outlets und UITableView Problem
- 2. Outlets UIBarButtonItems nicht
- 3. Delegierte Deklaration
- 4. iphone - Delegierte
- 5. Ember.js routing, outlets und animation
- 6. Outlets zu UILabel Nicht in XIB gefunden, auch nachdem Outlets in Header-Datei
- 7. Entfernen Delegierte aus Ketten
- 8. Delegierte und Ereignisse
- 9. anonyme Delegierte in C#
- 10. Frage über Delegierte
- 11. Asynchrone Multicast-Delegierte
- 12. Protokollvererbung + Delegierte in Swift
- 13. Delegierte funktionieren nicht
- 14. Delegierte und Rückrufe
- 15. Delegierte in Threads verwendet?
- 16. Swift Delegierte und Protokoll
- 17. iOS - Interface Builder Outlets nicht initialisiert
- 18. Outlets sind immer Null in benutzerdefinierten UITableViewCell
- 19. Wie werden NSCollectionView und Outlets richtig verwendet?
- 20. Warum erhalten Objective-C-Delegierte normalerweise die Eigenschaft assign anstelle von retain?
- 21. Wie arbeiten Delegierte (im Hintergrund)?
- 22. Starscream-Delegierte werden nicht aufgerufen
- 23. mehrere Listener für Delegierte iOS
- 24. So behandeln Sie mehrere Delegierte
- 25. der Delegierte meines Delegierten ist ... (Entwurfsmuster)
- 26. Delegierte, Lambdas, Action, Func, anonyme Funktionen
- 27. iOS-Dokumentation für Delegierte in Swift?
- 28. Erläutern, wie Delegierte im folgenden Code arbeiten?
- 29. Die delegierte Methode „clickedButtonAtIndex:“ genannt wird, nicht
- 30. Delegierte in .NET: Wie sind sie aufgebaut?
nicht versuchen, ein Idiot zu sein, aber haben Sie die einführenden Dokumente auf developer.apple.com gelesen? Es ist nur, dass die Frage einen Aufsatz beantworten würde. Stellen Sie sich vielleicht eine detailliertere Frage zu dem, was Sie aufhält. –
Die Dokumentation, die Apple im Cocoa Fundamentals Guide für Outlets bereitstellt: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/uid/ TP40002974-CH7-SW3 und Delegaten: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/uid/TP40002974-CH7-SW18 scheint ziemlich gründlich zu mir. –
@Brad - Ich bin keine Dokumentationsperson. – Moshe