"Testen die Gleichheit der Klassen" in Objective-c

Ich habe ein problem, das Verständnis, das Teil des "Tests die Gleichheit der Klassen", die definiert ist in der apple-Anleitung.

In einem dynamisch erstellten Unterklasse, die Klasse Methode wird in der Regel überschrieben, so dass die Unterklasse tarnt sich als die Klasse, das es ersetzt. Beim Test für die Gleichheit der Klassen, daher sollten Sie vergleichen die Werte, die von der Methode der Klasse eher als diejenigen, die zurückgegeben werden, indem untere-level-Funktionen. Setzen in Bezug auf die API, die folgende Ungleichungen gelten für dynamische Unterklassen:

[object class] != object_getClass(object) != *((Class*)object)

Sollten Sie daher testen zwei Klassen für die Gleichstellung wie folgt:

if ([objectA class] == [objectB class]) { //...
  • oder isMemberOfClass - stackoverflow.com/questions/383978/...
  • Was ist dein Ziel hier? Testen Sie die Klasse eines Objekts, oder der Vergleich der Klassen der beiden Objekte, oder...? Sicherlich *((Class *)object) nicht gleich das Ergebnis der Verfahren für die erste Klasse-Objekt können Sie nicht nur gegossen, eine Instanz zu einer Klasse (auch, die Class - Typ ist bereits ein pointer).
  • sorry, ich vergaß zu erwähnen, seine von apple Führer, und ich bin nicht immer diese ganzen Tests die Gleichheit der Klassen Sache... das ganze para ist von apple guide...
  • NÖ, das funktioniert. Wir haben typedef struct { Class isa } *id; so *((Class *)object) perfekt gibt die isa (die Klasse) des Objekts.
  • Ich denke, Sie beantwortet Ihre eigene Frage. Wie die Leute wissen, fortgeschrittenen Zeug ist, indem Sie es den ganzen Tag, jeden Tag für Jahre und Jahre. Ich nehme an, ein Durst nach Verbesserung der eigenen Methoden und in der Lage sein, um ständig mehr zu erreichen mit weniger Aufwand tut nicht weh, entweder.
InformationsquelleAutor S.J | 2012-06-08
Schreibe einen Kommentar