Dans le conseil rapide d'aujourd'hui, vous en apprendrez plus sur la classe NSNotification lors de la création d'un projet de démonstration pour surveiller les modifications de l'orientation du périphérique. Commençons!
Commander à partir d’un panier alimentaire revient un peu à travailler avec un NSNotification
. Vous vous rendez au comptoir, passez votre commande, obtenez un numéro et attendez que votre numéro soit appelé. En général, vous restez avec cinq autres personnes qui attendent que leur numéro soit appelé. Et lorsque le chef a fini de préparer votre repas, la personne derrière le comptoir appelle votre numéro et vous vous asseyez pour manger. Avec NSNotification
, vous devenez un observateur de "votre numéro" et lorsque l'objet qui affiche l'avis est "préparer votre nourriture" NSNotificationCenter
appelle votre numéro pour que vous puissiez venir chercher votre "nourriture". Dans ce didacticiel, au lieu d’attendre de la nourriture, nous allons attendre que l’appareil tourne, puis envoyer l’orientation actuelle à l’observateur. Nous parlerons de la manière de s’inscrire pour recevoir une notification, de poster une notification et de transmettre un objet chaîne avec la notification en utilisant informations utilisateur
.
Lancez Xcode et cliquez sur Fichier> Nouveau> Projet. Sélectionnez une application iOS Single View et cliquez sur "Suivant". Nommez votre produit "Notifications" et entrez un nom pour votre identifiant d'entreprise, tel que "com.companyName.notifications". Choisissez la famille de périphériques iPhone et cliquez sur "Suivant". Choisissez un emplacement pour stocker votre projet et cliquez sur "Créer".
Déclarez les méthodes utilisées pour publier et recevoir la notification en tapant le code suivant dans le fichier "ViewController.m".
@interface ViewController () - (void) postNotificationWithString: (NSString *) orientation; - (void) useNotificationWithString: notification (NSNotification *); @fin
Maintenant nous pouvons enregistrer le ViewController
objet pour recevoir des notifications. Tapez le code suivant dans le viewDidLoad
méthode.
NSString * notificationName = @ "MTPostNotificationTut"; [[NSNotificationCenter defaultCenter] addObserver: sélecteur automatique: @selector (useNotificationWithString :) name: notificationName object: nil];
Il y a quatre parties importantes du NSNotificationCenter
méthode addObserver: sélecteur: nom: objet:
. L'argument pour addObserver:
est l'objet qui veut savoir quand une notification donnée se produit. L'argument pour sélecteur:
est la méthode qui est appelée lorsque la notification se produit. L'argument pour prénom:
est le titre de la notification que l’observateur souhaite connaître; ça doit être unique. La dernière pièce de la méthode est objet:
. Son argument est l'objet attaché à la notification et est souvent néant
en fonction du contexte de la notification.
Ensuite, nous allons générer la logique pour poster une notification. Tapez le code suivant dans le fichier "ViewController.m". La méthode personnalisée postNotificationWithString:
qui a été déclaré précédemment prend un argument qui représente l'orientation du périphérique.
- (void) postNotificationWithString: (NSString *) orientation // méthode et logique de notification après NSString * notificationName = @ "MTPostNotificationTut"; NSString * key = @ "OrientationStringValue"; NSDictionary * dictionary = [NSDictionary dictionaryWithObject: orientation forKey: key]; [[NSNotificationCenter defaultCenter] postNotificationName: notificationName objet: nil userInfo: dictionnaire];
Il y a trois parties importantes de la NSNotificationCenter
méthode postNotificationName: object: userInfo:
. L'argument pour postNotificationName:
est le titre de la notification enregistrée lors de la précédente addObserver: sélecteur: nom: objet:
méthode. L'argument pour objet:
, encore une fois, l’objet qui publie la notification est-il dans ce cas néant
. L'argument pour informations utilisateur
est un NSDictionary
qui peut être utilisé pour envoyer des informations supplémentaires avec la notification. informations utilisateur
peut être néant
, mais dans ce cas, nous voulons connaître l'orientation de l'appareil. Afin de l'envoyer avec la notification, les informations sont regroupées dans un dictionnaire..
Pour obtenir l’orientation de l’appareil, remplacez le UIViewController
méthode willAnimateRotationToInterfaceOrientation: durée:
en tapant le code suivant entre les accolades. A chaque rotation du périphérique, la méthode postNotificationWithString:
est appelé et passe en "Portrait" ou "Paysage" en fonction de l'orientation du périphérique.
- (void) willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation) durée de interfaceOrientation: (NSTimeInterval) duration if (interfaceOrientation == UIInterfaceOrientationPortrait) [self postNotificationWithString: @ "Portrait"]; else [self postNotificationWithString: @ "Landscape"];
La méthode personnalisée useNotificationWithString:
a été déclaré antérieurement et enregistré comme sélecteur à appeler lorsque la notification se produit. Tapez le code suivant qui récupère la chaîne d’orientation du périphérique. informations utilisateur
. En utilisant NSLog
pour afficher sa valeur, chaque changement d'orientation indique qu'une autre notification a été publiée..
- (void) useNotificationWithString: (NSNotification *) notification // utilise la méthode de notification et la logique NSString * key = @ "OrientationStringValue"; NSDictionary * dictionary = [notification userInfo]; NSString * stringValueToUse = [valeur du dictionnairePour la clé: clé]; NSLog (@ "Orientation du périphérique ->% @", stringValueToUse);
Enfin, l'observateur doit être supprimé lorsque l'objet est désalloué. Tapez le code suivant dans le dealloc
méthode:
- (void) dealloc [[[NSNotificationCenter defaultCenter]] removeObserver: self];
Si vous êtes ne pas utiliser ARC, vous aurez besoin d'appeler explicitement [super dealloc]
ainsi, comme si:
- (void) dealloc [[[NSNotificationCenter defaultCenter]] removeObserver: self]; [super dealloc];
Cliquez sur Produit> Exécuter, ou cliquez sur la flèche "Exécuter" dans le coin supérieur gauche. Si vous utilisez iOS Simulator, cliquez sur Matériel> Rotation à gauche pour simuler la rotation du périphérique. Notez que "Orientation du périphérique -> Paysage" est enregistré dans la console..
Les méthodes de déclenchement dans des objets déconnectés nécessiteraient un codage lourd sans notifications et la NSNotificationCenter
. En ajoutant des observateurs pour écouter des publications spécifiques dans le centre de notification, vos objets peuvent communiquer et transmettre facilement des données..