Es sei denn, das Objekt hat einen Zeiger zurück auf seine "Eltern" oder Sie verfolgen es selbst, ich glaube nicht, dass es eine Möglichkeit gibt, das zu lösen. Du musst wirklich durch die Erinnerung gehen, um herauszufinden, was im Grunde "wer auf mich zeigt" bedeutet. Es ist im Wesentlichen das gleiche Problem wie das Finden des vorherigen Knotens in einer einfach verknüpften Liste - Sie müssen von vorne beginnen und anhalten, wenn Sie den Knoten erreichen, der auf den Knoten von Interesse zeigt.
Das Problem mit dem Versuch foo
von der Adresse zu bar
aufzuspüren ist, dass foo.bar
ist ein Zeiger, der die Adresse eines Objekts enthält, und nur foo
nennt es „bar“. Stellen Sie sich der Einfachheit halber vor, dass foo
auf Adresse 0x1000 und foo.bar
auf 0x1008 ist und auf ein anderes Objekt bei 0x2000 zeigt. Nun, wenn Sie die Adresse 0x2000 haben, gibt es keinen einfachen Weg zu wissen, dass 0x1008 darauf zeigt.
Es ist noch komplizierter, wenn Sie sich vorstellen, dass N andere Adressen auch auf 0x2000 zeigen könnten, also selbst wenn Sie Speicher gescannt hätten, wüssten Sie nicht, ob der Zeiger zu einem Objekt, einer Struktur, einer lokalen Variablen oder sogar gehörte nur ein zufälliges Muster, das zufällig mit der Adresse übereinstimmt, die du suchst.
Alle drei Antworten sind sehr gut. Danke Quinn, Peter und John. Ich endete Peters Lösung verwenden, indem Sie einen Zeiger auf die Objektinstanz in der Variablen "Tag" einer UIView (der Ivar ich zuvor Bezug nahm). –