SDK iOS NSNotification

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.


Étape 1: Configurez votre projet

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".


Étape 2: Inscrivez-vous pour recevoir une notification

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

Recevoir la notification

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.


Étape 3: Publier une 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..

Obtenir l'orientation de l'appareil

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"]; 

Utilisation de la notification

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); 

Gestion de la mémoire

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]; 

Étape 4: Exécuter le projet

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..


Conclusion

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..