Répondez à la question de ilew avec un véritable article de mieux expliquer, par exemple attacher , comment ils fonctionnent et délégués notifications. L'utilisation d'un modèle que nous voyons tout d'abord comment le modèle de délégué:

Un objet à la recherche d'un délégué
Dans la pratique, le modèle nécessite qu'un objet (le délégant) expose un point d'entrée unique à travers lequel un second objet (le délégué) sera en mesure de recevoir des messages / notifications du délégant:

Délégant et délégué
Il est important de comprendre que la communication entre le délégant et le délégué se fait via un protocole. Ce protocole est défini à partir de l'objet parent (le délégant) et doit être connue par le délégué. Nell ' exemple j'ai joint , j'ai utilisé le schéma suivant:

Exemple délégué
Permettez-moi de vous montrer les étapes séquentielles dans le code suivant:
- J'ai appelé un de mes cours de UIView 1UIView @ Interface DelegateView: UIView
- J'ai créé une propriété
delegate1
2
3
4
5UIView { @ Interface DelegateView: UIView {
@ Privé
__weak Identifiant <DelegateViewProtocol> déléguée;
}
nonatomic, weak ) id<DelegateViewProtocol> delegate; @ Propriété (non atomique, faible) <DelegateViewProtocol> Identifiant déléguée; - Je l'appelle mon protocole 1
2
3
4
5
6
7
8
9
10
11
12@ Protocole DelegateViewProtocol;
UIView { @ Interface DelegateView: UIView {
@ Privé
__weak Identifiant <DelegateViewProtocol> déléguée;
}
nonatomic, weak ) id<DelegateViewProtocol> delegate; @ Propriété (non atomique, faible) <DelegateViewProtocol> Identifiant déléguée;
@ Fin
@ Protocole DelegateViewProtocol <NSObject>
@ Option
void ) messaggio; - (Void) un message;
@ Fin - Dans le contrôleur de vue, j'ai inclus la classe UIView 1# Import "DelegateView.h"
- J'ai adopté le Protocole 1
2
3# Import "DelegateView.h"
UIViewController <DelegateViewProtocol> @ Interface ViewController: UIViewController <DelegateViewProtocol>
@ Fin - J'ai créé la UIView et je me suis montré comme un délégué 1
2
3
4
5
6
7
8
9void ) viewDidLoad - (Void) viewDidLoad
{
; [Super viewDidLoad];
/ / Faire aucune configuration supplémentaire après le chargement de la vue, généralement à partir d'un TR.
[ [ DelegateView alloc ] initWithFrame : CGRectMake ( 100 ., 100 ., 300 ., 300 . ) ] ; DelegateView Dview * = [[DelegateView alloc] initWithFrame: CGRectMake (.... 100, 100, 300, 300)];
dView ] ; [Self.view addSubview: Dview];
dView.delegate = self;
} - Lorsque vous cliquez sur le bouton de la UIView 1
2
3
4
5
6void ) buttonDidClicked : ( UIButton * ) sender - (Void) buttonDidClicked: (UIButton *) sender
{
delegate && [ delegate respondsToSelector : @selector ( messaggio ) ] ) { if (&& des délégués [délégué respondsToSelector: @ selector (message)]) {
; [Message délégué];
}
} - Le message est reçu dans le dispositif de commande d'affichage 1
2
3
4
5# Pragma mark - DelegateViewProtocol
void ) messaggio - Message (Void)
{
"%s" , __FUNCTION__ ) ; NSLog (@ "% s", __ FUNCTION__);
}
Enfin, toujours penser à motifs, notifications autrement utilisent une sorte d'intermédiaire. Le délégant, en pratique, ne communique pas directement avec le délégué, mais tire profit d'une superstructure qui a la tâche de recevoir et envoyer des messages:

Notifications
Ici, la situation est totalement différente. En réalité, il s'agit d'un véritable délégant et délégataire. Les rôles peuvent être inversés ou les deux existent simultanément. Le centre de notification agit en tant qu'intermédiaire, reprenant les messages que les objets envoient et les transmet aux objets qui se sont inscrits pour recevoir. Donc tout le monde peut envoyer et tout le monde peut recevoir un nombre illimité.
, etc… cosa ovviamente orrenda e non proponibile. Cette situation est évidemment différente de la configuration des délégués où, comme on le voit ci-dessus, il ne peut être déléguée à délégant - vaut entrer delegate2 , delegate3 , etc ... ce qui est évidemment horrible et pas faisable.
La seule chose qu'ils ont en commun les deux approches est la possibilité, même pour le délégué du modèle, pour aboutir à un objet qui est en délègue à titre de délégué dans le même temps.










Il n'y a aucun commentaire pour cet article
Laisser un commentaire