Noch ein C# /. NET Typ versucht Objective-C mit großen Träumen Millionen mit einer iPhone App zu machen :)MyObject reagiert möglicherweise nicht auf Nachricht "-Foo". (Noob) Objective-C Frage
Ok, ich bin mir sicher, diese Frage stammt von mir so an statische typisierte Sprachen gewöhnt, und deshalb habe ich eine harte Zeit, sich anzupassen, aber hier ist mein Problem. Nehmen wir an, ich eine Klasse namens MyObect haben:
MyObject.h
@interface MyObject : NSObject
{
}
-(void)Foo;
@end
MyObject.m
#import "MyObject.h"
@implementation MyObject
-(void)Foo
{
//do something fooey
}
@end
Jetzt mess Ich versuche, mit einem NSMutableArray dieser Objekte , also fülle ich in meinem Hauptteil ein Array dieser Objekte so:
NSMutableArray *array = [[NSMutableArray alloc] init];
for(int i = 0; i<10;i++)
{
MyObject *obj = [[MyObject alloc]init];
[array addObject:obj];
}
Nichts Besonderes. Jetzt versuchte ich jedoch, das erste Array herauszuziehen und die foo-Methode aufzurufen. Also, hier bin ich verwirrt. Ich habe dies versucht:
MyObject *obj = [array objectAtIndex:1];
[obj Foo];
und während dies funktioniert, bekomme ich eine Warnung von MyObject nicht auf die Nachricht antworten. Also, ich dachte, ok, lass mich es werfen:
MyObject *obj = (MyObject *)[array objectAtIndex:1];
[obj Foo];
und das gibt mir auch die Warnung.
Ich denke, meine Frage ist eine grundlegende Frage, wie Sie Elemente in einer Sammlung speichern, und wie Sie sie herausziehen und immer noch den Typ des Objekts behalten. Wieder komme ich von einem .NET-Hintergrund, also ist mein Denken möglicherweise grundlegend fehlerhaft, also wenn mich jemand in die richtige Richtung zeigen könnte, würde ich es sehr schätzen.
BEARBEITEN: Mein ursprünglicher Code hatte in der Tat das Sternchen in der Besetzung (ohne sie erhalten Sie einen Kompilierfehler). Es zeigt immer noch die Warnung aber ...
Es ist nicht so, dass es nicht funktioniert, es baut und läuft erfolgreich, aber ich bekomme eine Warnung vom (XCode) Compiler. Ich könnte es einfach ignorieren, aber ich habe einfach das Gefühl, dass ich etwas falsch mache. (Danke für die Informationen über Methodenbenennungspraktiken.) – BFree
redigierte meine Antwort, um zu spezifizieren, was ich mit "Arbeit" meinte :-) – harms
Ich prüfte einfach, und ja, die Headerdatei wird oben mit #import eingeschlossen. (Ohne es, bekomme ich Kompilierzeit Fehler, die es nicht einmal bauen lassen). Ich bekomme trotzdem die Warnung. (Ich fühle mich wie so ein komisches Noob !!) Danke für deine Hilfe. – BFree