Mit NSMethodSignature auf dem iPhone (mit Obj-C 2.0-Eigenschaften)

Hey Leute, ich bin mit dem folgenden code auf mein Handy, wo 'Objekt' ist eine Katze, die eine Unterklasse von Tier. Tier hat eine Eigenschaft 'Farbe':

NSLog(@"Object: %@", object);
NSLog(@"Color: %@", [object color]);
NSMethodSignature *signature = [[object class] instanceMethodSignatureForSelector:@selector(color)];

NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
[invocation setTarget:object];

[invocation invoke];

Die Ausgabe in meiner Konsole ist:

2009-06-28 16:17:07.766 MyApplication[57869:20b] Object: <Cat: 0xd3f370>
2009-06-28 16:17:08.146 MyApplication[57869:20b] Color: <Color: 0xd3eae0>

Dann, bekomme ich die folgende Fehlermeldung:

*** -[Cat <null selector>]: unrecognized selector sent to instance 0xd3f370

Irgendwelche Hinweise? Ich bin mit diesem ähnlichen Verfahren in anderen Klassen, aber ich kann nicht herausfinden, was mache ich falsch in diesem Fall. Der Schalter "Farbe" existiert wohl, aber ich weiß nicht, warum es nicht richtig erkannt.

  • "Tier hat eine Eigenschaft 'color'..." ich würde es sehr gerne sehen, Ihre Implementierung dieser Eigenschaft in der Kopffüßer-Unterklasse. 🙂
  • Zum Glück, Obj-C ist eine reflektierende Sprache. 😀
InformationsquelleAutor Craig Otis | 2009-06-28
Schreibe einen Kommentar