2017-03-13 1 views
0

Ich Abrufen von Daten über SignalR und die neuesten Daten in einem Wörterbuch, das in meiner WebServices-Klasse vorhanden zurückgegeben.Zeiger auf Objekt in einer anderen Klasse?

Ich würde gerne einen Zeiger auf dieses Wörterbuch haben und in der Lage sein, die Daten in vielen anderen Klassen/Viewcontrollern zu verwenden.

Ich möchte vermeiden, eine Instanz meiner WebServices-Klasse überall dort zu erstellen, wo ich die Daten verwende.

Wie kann ich das erreichen?

Antwort

1

Die übliche Art, Daten wie diese zu teilen, besteht darin, sie in Ihre App-Delegate-Klasse aufzunehmen.

Erstellen Sie einfach das Wörterbuch in Ihrem AppDelegate, und wann immer Sie es zugreifen müssen nur abrufen mit:

MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
NSDictionary *myDictionary = appDelegate.myDictionary; 

// Do whatever you want with myDictionary 
// ... 
2

Machen Sie Ihre WebServices-Klasse zu einem Singleton. Diese Art von App-weiten Daten ist ein guter Anwendungsfall für ein Singleton.

+2

Bis Sie entdecken Sie Ihre App zwei verarbeiten muss oder mehr mögliche Sätze von Daten anstelle von nur einem. Aus diesem Grund ist die Verwendung eines Singletons für App-weite Daten keine gute Idee. Anforderungen ändern sich und wenn Sie eine ganze App umgestalten müssen, weil Sie sich unklug entschieden haben, ein Singleton zu verwenden, macht es keinen Spaß. – rmaddy

+1

Sicherlich müssten Sie die Anforderungen analysieren und über mögliche ** zukünftige ** Anforderungen nachdenken, bevor Sie Ihre Entscheidung treffen. Die Verwendung eines Datencontainers ist sicherlich besser, als ein Wörterbuch wie in der anderen Antwort in den App-Delegierten zu stauen. –

Verwandte Themen