2017-03-01 1 views
0

Excuses d'avance si les titres de la question sont exacts. J'ai décrit ci-dessous le flux de base de ce que je veux accomplir.Création d'une classe de délégué global dans AppDelegate

AppDelegate.h

@interface AppDelegate : UIResponder <UIApplicationDelegate, SomeFrameworkDelegate, OtherFrameworkDelegate> 


…other init stuff 

AppDelegate.m

  • Inclure les méthodes SomeFrameworkDelegate et OtherFrameworkDelegate.
  • Ces méthodes génèrent principalement des messages tels que connecté/déconnecté du service.

MainViewController

  • faire des choses avec ces méthodes de délégués.
  • Effectuez des actions d'interface utilisateur lors de la connexion/déconnexion. etc

DetailsViewController

  • Utilisez la même chose que dans le MainViewController.

NOTES:

  • Je suppose que je serais de variables globales dans le AppDelegate, puis dans l'autre code de l'interface, je serais en train de créer une instance de la AppDelegate:

    AppDelegate *appDelegate=(AppDelegate *)[[UIApplication sharedApplication]delegate]; appDelegate.isConnected = ... appDelegate.serviceName = ...

Comment pourrais-je détecter w Quand un message arrive aux méthodes du délégué? NSNotificationCenter/NSTimer?

C'est-à-dire de publier une notification une fois qu'une méthode déléguée est déclenchée ou de créer un temporisateur pour interroger les variables dans appDelegate.

+0

Voulez-vous dire cela; vous avez des variables dans votre AppDelegate et vous voulez que les autres classes soient averties quand elles changent de valeur? Si oui, vous devriez probablement utiliser KVC ... sinon je ne comprends pas complètement votre question. –

+0

Étant donné que vous modifiez les valeurs dans les méthodes déléguées, vous pouvez publier une notification. De cette façon, tous les contrôleurs View intéressés seront tous informés à ce sujet. –

Répondre

1

Il semble que vous essayez de gérer/gérer une connexion dans votre délégué d'application. L'objectif de AppDelegate est de répondre aux événements de niveau application tels que applicationdidbecomeactive/applicationwillenterforeground. Ma recommandation est que vous créez un singleton pour gérer votre connexion. Ceci est communément appelé le pattern sharedInstance. Ce singleton devrait implémenter les fonctions déléguées de managedObject. Vous avez plusieurs options après leur implémentation.

Dans ce cas, je recommande d'utiliser NSNotification depuis que vous essayez de trouver un changement d'état de connexion. Si vous souhaitez être averti de chaque modification apportée aux propriétés de votre objet, vous devez utiliser KVO.

0

Vous avez vraiment répondu à votre propre question. J'utiliserais NSNotificationCenter pour publier une notification dans la méthode déléguée lorsqu'elle est déclenchée. Ensuite, dans votre contrôleur de vue, observez cette notification et répondez.