2016-07-18 20 views
0

übergibt Ich habe 3 Klassen sagen A, B und C, und A drückt B und B drückt C jetzt möchte ich schnell von C auf A zurückspringen aber Ich möchte einige Werte bekommen. Ich weiß, dass dies über Benachrichtigungen möglich ist. Ist dies über Delegate möglich? Ich erkläre auch Klasse C in A wie folgt.Wie man Werte von Level 3 zu 1 in der Hierarchie über Delegate

// in der Klasse A

C *c = [C new]; 
c.delegate = self; 

ich auch getan, aber delegierte Methode ist nicht in der Klasse A. Aufruf Need Vorschlag.

Antwort

0

Sie können eine neue DataModel Klasse für die Werte erstellen, die Sie bestehen müssen.

seine Instanz erstellen, sagen modelObjectInstance in A.

Wenn B drückt, passieren den Verweis auf B.

B führt, was Updates auf dem modelObjectInstance will.

Wenn C gedrückt wird, passieren den Verweis auf C.

C führt, was Updates auf dem modelObjectInstance will.

Jetzt, wenn B und C auftauchen, hat A eine Referenz der modelObjectInstance mit aktualisierten Werten.

Hinweis: Erstellen Sie schwache Referenzen in B und C für die modelObjectInstance, sonst haben Sie einen Retain-Zyklus.

+0

Wird es funktionieren, direkt C nach A zurückzuspringen, weil es meine Anforderung ist, A-> B-> C zu verschieben und dann C-> A zurückzugehen? – Aleem

+0

Ja. Der Besitz des Objekts bleibt bei A und Sie würden nur einen Verweis auf B und C übergeben. Im Wesentlichen ändern sie Werte innerhalb des gleichen Objekts. Seien Sie vorsichtig, dass Sie den Wert des Objekts zu keinem Zeitpunkt direkt auf eine andere Referenz setzen. Aktualisieren Sie einfach die Werte in der gleichen Referenz, z. modelObject.value1 = wasWert. – 7vikram7

+0

Ich habe denselben Ablauf mit NSString durchgeführt, aber es funktioniert nicht in Eine Zeichenfolge ist create mit starken Verweis und in B und C mit schwach. wo liege ich falsch? – Aleem