Hey Leute, ich führe den folgenden Code auf meinem Handy aus, wo "Objekt" eine Katze ist, die eine Unterklasse von Animal ist. Tier hat eine Eigenschaft 'Farbe':Verwenden von NSMethodSignature auf dem iPhone (mit Obj-C 2.0-Eigenschaften)
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 folgende Fehlermeldung:
*** -[Cat <null selector>]: unrecognized selector sent to instance 0xd3f370
Irgendwelche Hinweise? Ich verwende diese ähnliche Methode in anderen Klassen, aber ich kann nicht herausfinden, was ich in diesem Fall falsch mache. Die Auswahl "Farbe" existiert offensichtlich, aber ich weiß nicht, warum sie nicht richtig erkannt wird.
"Tier hat eine Eigenschaft 'Farbe' ..." Ich würde sehr gerne Ihre Umsetzung dieser Eigenschaft in der Unterklasse Cuttlefish sehen. :-) –
Glücklicherweise ist Obj-C eine reflektierende Sprache. : D –